在 Laravel 的邮件库中设置 SendGrid 类别

Set SendGrid category in Laravel's mail library

我正在 Laravel 中使用 SendGrid's docs 中建议的配置通过 SendGrid 发送电子邮件。

只是提供一个现在看起来如何的例子:

Mail::send('emails.demo', $data, function($message)
{
    $message->to('jane@example.com', 'Jane Doe')->subject('This is a demo!');
});

电子邮件本身工作正常,但我想添加一个 SendGrid 类别。我在过去的非 Laravel 项目中使用 this repo 中的 addCategory() 方法完成了此操作。

我的问题:是否有仅使用 Laravel 邮件库添加 SendGrid 类别的简单方法,还是仅使用 SendGrid PHP 库更有意义?

我只会使用图书馆,即使它不是那么漂亮。

您可以通过添加包含类别的 X-SMTPAPI header 来执行此操作,但 Laravel 不会公开自定义 header,因此您必须下拉直接到 SwiftMailer。例如,看看 this thread

根据您的 MAIL_MAILER (或 Laravel <7 中的 MAIL_DRIVER

MAIL_DRIVER=smtp:

    public function build()
    {
        return $this->view('mail')
            ->from('')
            ->subject('')
            ->withSwiftMessage(function($message) {
                $message->getHeaders()->addTextHeader(
                    'X-SMTPAPI', json_encode(['category' => 'testing category'])
                );
            });
    }

阅读有关 smtp 驱动程序的更多信息:https://docs.sendgrid.com/for-developers/sending-email/laravel#adding-a-category-or-custom-field

MAIL_DRIVER=sendgrid:

   use Sichikawa\LaravelSendgridDriver\SendGrid;

    public function build()
    {
        return $this->view('mail')
            ->from('')
            ->subject('')
            ->sendgrid(['category' => 'testing category']);
    }

阅读有关 sendgrid 驱动程序的更多信息:https://github.com/s-ichikawa/laravel-sendgrid-driver