parfumix / mailer

基于 SwiftMailer 的邮件发送器。

dev-master 2017-07-21 08:23 UTC

This package is auto-updated.

Last update: 2024-09-19 21:44:34 UTC


README

Mailer 是一个基于 SwiftMailer 的简单包,允许使用不同的驱动发送消息。

安装

您可以使用 composer 包管理器进行安装。运行以下命令之一:

$ php composer.phar require parfumix/mailer "dev-master"

或添加

"parfumix/mailer": "dev-master"

到您的 composer.json 文件中

配置

如果您使用 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');