【问题标题】:SendGrid category not being set未设置 SendGrid 类别
【发布时间】:2017-01-18 12:55:35
【问题描述】:

我正在重做一个集成了 SendGrid 以进行邮件发送的项目。

好吧,我正在使用 Laravel 和 Mailable 类,并且我创建了一个函数来设置 SendGrid 类别:

public function setSendgridCategory($category){
    $encodedCategory = json_encode(['category' => $category]);
    $this->withSwiftMessage(function (\Swift_Message $message) use ($encodedCategory){
        $message->getHeaders()->addTextHeader('X-SMTPAPI', $encodedCategory);
    });
}

我有一个监听器记录我的标题,它们看起来像:

Date: Wed, 18 Jan 2017 13:47:32 +0100
Subject: XXXXXXXXX.
From: xXXXXXx <system@xxXXxXXXXXX.com>
To: XXXXxxx <XxXXX@xxXXXxXXX.com>
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-SMTPAPI: {"category":"Otros"}

也尝试了数组

X-SMTPAPI: {"category":["Otros"]}

类别名称与已在 SendGrid 上跟踪的类别名称完全相同,但当我查看 SendGrid 活动日志时,已发送电子邮件,但未设置类别。

有什么想法吗?

【问题讨论】:

  • Sendgrid 配置在您的邮件驱动程序下正确设置,对吗?邮件正在发送,唯一的问题是类别,是吗?
  • 是的,邮件正在发送中,html 被完美解析,只是类别。

标签: php laravel sendgrid swiftmailer


【解决方案1】:

类别需要是一个数组。试试看:{"category":["Otros"]}

【讨论】:

  • hmmm... 您传递给setSendgridCategory 的字符串是什么字符集和编码?类别必须是 7 位/US-ASCII。尝试强制编码和字符集。
  • 字符串是 ASCII,我尝试将标头 Content-Transfer-Encoding 修改为 7-bit/US-ASCII 但没有运气
【解决方案2】:

好吧,在测试了我想到的所有内容并按照@bwest 的建议弄乱了编码之后,更改我的 .env 文件上的驱动程序解决了它。

我不知道我从哪里得到的,但我的驱动程序设置为

MAIL_DRIVER=sendgrid

而且发邮件正常,所以没注意,改成

MAIL_DRIVER=smtp

现在我的类别设置正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2017-01-26
    相关资源
    最近更新 更多