2017-02-25 8 views
3

こんにちは私は、SMTP APIを使用してSendGridを介して送信するために、php mailer Swiftmailerを使用しています。 SendGridに独自の引数を渡すことで、電子メールの追跡に役立てることができます。私はではSwiftMailerでユニークなヘッダを渡すことに成功してきた:Swiftmailerを使用してSendGridに一意の引数を渡す

$headers = $message->getHeaders(); 

    $headers->addTextHeader('AccountId', $accountId); 

これらの値が正常に送信された電子メールのヘッダに注入されているが、それらは私のイベントのウェブフックまたはコントロールパネルでSendGridによって戻されていません。

私もどちらか動作しませんでした、これを試してみました:

$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); 

これはおそらくSendGrid支援のための質問ですが、それはではSwiftMailerに関連するので、私は私が最初にここに試してみようと思いました。ありがとう!

答えて

2

SendGrid expects a JSON key/value structure in the X-SMTPAPI header entryようaddParameterizedHeaderメソッドを使用する必要があります一つの値のため

$headers->addTextHeader('unique_args', $args); 

です。

私はSwiftMailer 5.0.3を使用している古いプロジェクトを持っています。これは私がSendGridにカテゴリ値を送信する方法である:

あなたの例にそのパターンを適用する
$message->getHeaders()->addTextHeader('X-SMTPAPI', json_encode(array(
    'category' => $category, 
))); 

$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)); 
+1

ありがとう!これは、SendGridが実際の電子メールヘッダーのカスタム引数を抑制するため、把握するのが難しかった。 – Acyra

+0

@Acyra - 私はドキュメントを見てから私の答えを更新しました。最初の文章はドキュメントにもリンクしています。 – Sonny

2

方法addTextHeaderは、あなたが代わりにこの

$headers->addParameterizedHeader(
    ["customerAccountNumber" => "55555"], 
    ["activationAttempt" => "1"] 
); 
関連する問題