coconutcraig/laravel-postmark

Laravel通过Postmark API发送邮件的包

v3.2.0 2024-02-19 00:25 UTC

README

Postmark

Laravel Postmark

Latest Version on Packagist Software License Tests StyleCI Total Downloads

Postmark是确保您的交易性邮件能够到达客户收件箱的最简单、最可靠的方式。

升级

有关详细信息,请参阅UPGRADE

安装

您可以通过composer安装此包。

$ composer require coconutcraig/laravel-postmark

该包将自动注册自己。

使用

更新您的.env文件,添加您的服务器密钥,并将邮件驱动设置为postmark

MAIL_MAILER=postmark
POSTMARK_TOKEN=YOUR-SERVER-KEY-HERE

就是这样!邮件系统将继续以前的方式工作,并且您可以将Postmark切换到任何预包装的Laravel邮件驱动程序(smtp、mailgun、log等)。

请注意,在使用Postmark时,您的邮件中使用的发送地址必须是您已经配置的有效的发送者签名

Postmark模板

通知

Postmark提供了一种出色的模板服务,您可以使用它而不是在您的Laravel应用程序中维护模板。如果您想利用这一点,此包提供了对Laravel提供的开箱即用的基本MailMessage的扩展。在Laravel通知中,您可以执行以下操作以开始利用Postmark模板。

use CraigPaul\Mail\TemplatedMailMessage;

public function toMail($notifiable)
{
    return (new TemplatedMailMessage)
        ->identifier(8675309)
        ->include([
            'name' => 'Customer Name',
            'action_url' => 'https://example.com/login',
        ]);
}

可邮寄

您还可以通过Laravel提供的开箱即用的基本Mailable的扩展来使用模板化的通知。

use CraigPaul\Mail\TemplatedMailable;
use Illuminate\Support\Facades\Mail;

$mailable = (new TemplatedMailable())
    ->identifier(8675309)
    ->include([
        'name' => 'Customer Name',
        'action_url' => 'https://example.com/login',
    ]);

Mail::to('mail@example.com')->send($mailable);

在两种情况下,您也可以使用->alias()方法使用别名而不是模板标识符。

Postmark标签

如果您依赖使用Postmark中的标签来对发出的电子邮件进行分类,您可以在Mailable类的build方法中简单地添加一个标题。

use Symfony\Component\Mailer\Header\TagHeader;
use Symfony\Component\Mime\Email;

public function build()
{
    $this->withSymfonyMessage(function (Email $message) {
        $message->getHeaders()->add(new TagHeader('value'))
    });
}

Postmark元数据

与标签类似,您也可以通过添加标题来包含元数据

use Symfony\Component\Mailer\Header\MetadataHeader;
use Symfony\Component\Mime\Email;

public function build()
{
    $this->withSymfonyMessage(function (Email $message) {
        $message->getHeaders()->add(new MetadataHeader('field', 'value'));
        $message->getHeaders()->add(new MetadataHeader('another-field', 'another value'));
    });
}

在这种情况下,以下对象将被发送到Postmark作为元数据。

{
    "field": "value",
    "another-field", "another value"
}

Postmark服务器

默认情况下,我们使用在您部署的环境中设置的配置变量来确定您发送到的Postmark服务器。这适用于大多数用例,但如果您需要或希望在运行时确定Postmark服务器,您可以在发送过程中提供标题。

use CraigPaul\Mail\PostmarkServerTokenHeader;
use Symfony\Component\Mime\Email;

public function build()
{
    $this->withSymfonyMessage(function (Email $message) {
        $message->getHeaders()->add(new PostmarkServerTokenHeader('POSTMARK_TOKEN'))
    });
}

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

测试

$ composer test

贡献

有关详细信息,请参阅CONTRIBUTINGCONDUCT

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅我们的安全策略

致谢

许可

MIT 许可证(MIT)。更多信息请参阅许可文件