marikv / mailer
基于 SwiftMailer 的邮件发送器。
dev-main
2023-04-04 06:05 UTC
Requires
- php: >=7.0.0
- monolog/monolog: 1.x-dev
- swiftmailer/swiftmailer: 6.1.3
This package is auto-updated.
Last update: 2024-09-04 09:13:39 UTC
README
Mailer 是一个基于 SwiftMailer 的简单包,允许使用不同驱动发送消息。
安装
您可以使用 composer
包管理器进行安装。运行以下命令之一:
$ php composer.phar require marikv/mailer "dev-master"
或者将以下内容添加到您的 composer.json 文件中:
"marikv/mailer": "dev-master"
配置
如果您使用 DotEnv 包,只需填充您的 .env 文件。
MAIL_DRIVER=smtp // Allow to select transport MAIL_HOST=smtp.gmail.com MAIL_PORT=465 MAIL_USERNAME=your_gmail@gmail.com MAIL_PASSWORD=your_password MAIL_ENCRYPTION=ssl
并开始使用
$mailer = (new Mailer( new Mailer\Transport ))->alwaysFrom('your_email_always_from@gmail.com', 'Your name') ->alwaysReplyTo('reply_to@gmailcom', 'Reply name');
如果您使用其他存储仓库,您可以创建新的 Mailer 实例,并使用数组中的配置数据填充。
$config = array( 'driver' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 465, 'username' => 'you_email@gmail.com', 'password' => 'your_passwd', 'encryption' => 'ssl' ); $mailer = (new Mailer\Mailer( new Mailer\Transport( $config ) ))->alwaysFrom('your_email_always_from@gmail.com', 'Your name') ->alwaysReplyTo('reply_to@gmailcom', 'Reply name');
如果您想添加自定义传输,您只需要创建一个新的实现 TransportAble 的传输类。
class ArrayTransport extends Transport implements TransportAble { /** * {@inheritdoc} */ public function send(Swift_Mime_Message $message, &$failedRecipients = null) { $this->beforeSendPerformed($message); // Send your message return $this->numberOfRecipients($message); } }
并将驱动程序注册到传输类中。
$tranport = (new Mailer\Transport([ 'driver' => 'my_driver' ]))->extend('my_driver', function($transport) { return new ArrayTransport() }); $mailer = (new Mailer($tranport)) ->alwaysFrom('your_email_always_from@gmail.com', 'Your name') ->alwaysReplyTo('reply_to@gmailcom', 'Reply name');
用法
您可以直接使用 Mailer 并通过 ::to('to_email@gmail.com') 方法发送消息
$mailer->to('to_email@gmail.com', 'Subject') ->send('This is a test message'); $mailer->to('to_email@gmail.com', 'Subject')->send('Message body', null, function (\Mailer\Message $message) { return $message->setFrom('other_from_email@gmail.com'); });
或者您可以创建需要 build 方法的 Mailable 类
class NewPayment extends \Mailer\Mail implements \Mailer\Mailable { public function build() { $this->text('Body message'); } } $mailer->to(array( 'to_email@gmail.com' ))->send( new NewPayment('Subject message') );
您可以使用 with 方法更改驱动程序
$mailer->to('to_email@gmail.com', 'Subject') ->with('sendmail') ->send('This is a test message');