来自 SendGrid 的这封电子邮件在 PHP API 中指的是什么?

问题描述

几天前,我们收到了一封来自 sendgrid 的电子邮件,说他们将改变他们 API 中的一些行为,我已经做了研究,但我还没有找到他们所指的具体内容,目前我们正在使用 PHP API ,至少对于 2) 我认为我们没问题,因为我们使用 SendGrid 类来构建电子邮件

检查您使用邮件发送端点的代码并确保 如果适用,“启用”参数包含在过滤器下。

你需要做什么?

为避免您的邮件发送服务中断,请务必使 2021年8月10日前的以下操作

  1. 检查您使用邮件发送端点的代码并确保 如果适用,“启用”参数包含在过滤器下。

  2. 检查您的邮件发送标头以确保您只使用一个 X-SMTPAPI 头和地址头的类型相同。删除多个 相同类型的标题,因此您只有 1 个相同类型的标题。 例如,如果您当前正在使用多个“来自”标头,则您 应该修改您的代码,以便您有一个“发件人”标头。

  3. 检查您的代码以确保您没有应用任何 个性化块替换您的自定义参数字段。

但是第三项呢?我们有以下时尚的替代品:$mail->personalization[0]->addSubstitution('%url%',$link); 但我还没有发现像“自定义参数中的块替换”之类的东西

第一项也让我担心,我也没有发现类似的东西,所以我担心 PHP API 在幕后做了一些事情。

这是我们使用的代码示例。

$sendgrid = new SendGrid(env('SENDGRID_APIKEY'));
$from_m = new SendGrid\Email(null,$from);
$to_m = new SendGrid\Email(null,$from);
$content = new SendGrid\Content("text/html",$body);
$mail = new SendGrid\Mail($from_m,'.',$to_m,$content);
$mail->personalization[0]->addBcc($tos);
$mail->personalization[0]->setSubject($subject);
$mail->personalization[0]->addSubstitution('%MemberName%',$name);
$mail->personalization[0]->addSubstitution('%url%',$hash_url);
$mail->setTemplateId($template_id);
$sendgrid->client->mail()->send()->post($mail);

我们正在使用 sendgrid/sendgrid: ~6.2

解决方法

这里是 Twilio SendGrid 开发者布道者。

从我阅读您的代码和发送给您的指南来看,您应该没问题。

  1. 您似乎没有使用任何需要通过 API 启用的东西,尽管您可以check all the mail_settings and tracking_settings in the API reference here

  2. 当您使用库并调用 API 时,您似乎没有发送任何额外的标头。

  3. 您似乎没有使用任何自定义参数,因此您没有对它们应用任何替换。

我确实建议您将 PHP 帮助程序库从 6 版升级到 7 版。这将确保底层库也以最新的方式使用 API。