使用 Swiftmailer 将唯一参数传递给 SendGrid

Acy*_*yra 7 php swiftmailer sendgrid

嗨,我正在使用 php 邮件程序 Swiftmailer 使用 SMTP API 通过 SendGrid 发送。我们可以将唯一参数传递给 SendGrid 以帮助跟踪电子邮件。我已经成功地使用 Swiftmailer 传递了独特的标头:

   $headers = $message->getHeaders();

   $headers->addTextHeader('AccountId', $accountId);
Run Code Online (Sandbox Code Playgroud)

虽然这些值已成功注入到已发送电子邮件的标头中,但 SendGrid 不会将它们传回我的事件 webhook 或控制面板中。

我也试过这个,这也不起作用:

$headers = $message->getHeaders();

        $args = '  {
    "customerAccountNumber": "55555",
    "activationAttempt": "1",
    "New Argument 1": "New Value 1",
    "New Argument 2": "New Value 2",
    "New Argument 3": "New Value 3",
    "New Argument 4": "New Value 4"

}';
        $headers->addTextHeader('unique_args', $args);
Run Code Online (Sandbox Code Playgroud)

这可能是 SendGrid 支持的问题,但由于它与 Swiftmailer 相关,我想我会先在这里尝试。谢谢!

Son*_*nny 7

SendGrid 需要X-SMTPAPI标头条目中的 JSON 键/值结构

我有一个使用 SwiftMailer 5.0.3 的旧项目。这是我将类别值发送到 SendGrid 的方式:

$message->getHeaders()->addTextHeader('X-SMTPAPI', json_encode(array(
    'category' => $category,
)));
Run Code Online (Sandbox Code Playgroud)

将该模式应用于您的示例:

$headers = $message->getHeaders();

$args = array(
    'unique_args' => array(
        'AccountId' => $accountId,
        "customerAccountNumber" => "55555",
        "activationAttempt" => "1",
        "New Argument 1" => "New Value 1",
        "New Argument 2" => "New Value 2",
        "New Argument 3" => "New Value 3",
        "New Argument 4" => "New Value 4",
    ),
);

$headers->addTextHeader('X-SMTPAPI', json_encode($args));
Run Code Online (Sandbox Code Playgroud)