aaronschmied/laravel-smtpd

此包已弃用,不再维护。未建议替代包。

用于Laravel接收电子邮件的SMTP服务器。

v1.0.0 2019-06-05 17:01 UTC

This package is auto-updated.

Last update: 2022-08-06 00:17:58 UTC


README

这是一个基本的SMTP服务器,用于使用Laravel接收电子邮件。

本包仍在开发中,使用时请自行承担风险

注意

本包包含来自Christian Mayer修改过的源代码。具体包括thefox/networkthefox/smtpd两个包。这两个包均采用GNU通用公共许可证第3版发布。

使用方法

使用以下命令通过composer安装此包:

composer require aaronschmied/laravel-smtpd

如果您正在运行Laravel 5.5或更高版本,服务提供器将自动被发现。否则,请将以下提供器添加到您的app.php文件中的应用程序提供器:

  'providers' => [
    ...
    
    \Smtpd\Providers\SmtpdServiceProvider::class,
  ],

使用以下命令发布配置文件:

php artisan vendor:publish --provider="Smtpd\Providers\SmtpdServiceProvider"

这将在您的配置目录中创建smtpd.php文件。

配置

interface & port

默认情况下,服务器在任何接口(0.0.0.0)上监听端口25

hostname

定义服务器的主机名。在生产模式下,这应该是您服务器的FQDN。

auth

包含认证的配置选项。

handler

处理类检查从客户端提交的用户名/密码组合是否有效。

您可以通过扩展基本处理类Smtpd\Auth\Handler来在此处提供自己的处理程序。

如果为空,将使用配置的守卫创建一个守卫处理程序。

guard

仅在处理程序为空时使用守卫。

本包提供了一个集成的smtp守卫驱动程序。要使用此驱动程序,编辑您的auth.php配置文件,并按以下方式添加守卫配置:

'guards' => [
    ...
    'smtp' => [
        'driver' => 'smtp',
        'username_field' => 'email',
        'provider' => 'users',
    ],
],

提供者可以是您的配置中定义的任何用户提供者。在此示例中,已配置默认的eloquent用户提供者,其中电子邮件字段用作smtp用户名。

authorize_recipients

此处理程序检查用户是否可以向指定的收件人发送消息。

默认情况下,所有收件人都可以使用Smtpd\Auth\AuthorizeAllRecipients::class类允许。

如果您只想允许认证用户发送消息,创建一个新的处理程序,实现Smtpd\Contracts\AuthorizesRecipients接口。

context_options

在这里您可以定义套接字的附加选项。

默认情况下,套接字配置了使用STARTTLS加密连接时提供自签名证书的选项。

有关选项的更多信息,请参阅此处

接收消息

要接收消息并从中处理,创建一个对Smtpd\Events\MessageRecieved事件的监听器。

该事件包含用户(如果已认证)以及Smtpd\Message对象。

Smtpd\Message也可以使用makeMailable()方法创建一个Mailable对象。

启动监听器

使用命令行

要开始监听传入的连接,运行以下命令

php artisan smtpd:listen

使用服务器管理器

您还可以通过依赖容器中的Smtpd\ServerManager类启动服务器。

resolve(Smtpd\ServerManager::class)
    ->run();

从这里,您可以将消息保存到数据库中,使用Laravel Mailer将其发送到另一个服务器,或者只是忽略它... ¯\_(ツ)_/¯

许可

GPL-3.0

版权 © 2019 Aaron Schmied schmied.dev

查看LICENSE

包含以下软件包的源代码

thefox/network → 版权 © 2017 Christian Mayer fox21.at

thefox/smtpd → 版权 © 2014 Christian Mayer fox21.at