2017-02-25 3 views
3

Hallo Ich benutze den PHP-Mailer Swiftmailer, um SendGrid mit der SMTP-API zu senden. Wir können SendGrid eindeutige Argumente übergeben, um die E-Mail zu verfolgen. Ich habe nebenbei einzigartige Header mit Swiftmailer erfolgreich:Eindeutige Argumente an SendGrid mit Swiftmailer übergeben

$headers = $message->getHeaders(); 

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

Während diese Werte erfolgreich in den Header der gesendeten E-Mail injiziert werden, werden sie von SendGrid zurück an meine Veranstaltung Webhook oder in der Systemsteuerung nicht zu werden.

Ich habe auch versucht diese, die entweder nicht funktioniert hat:

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

Diese für SendGrid Unterstützung wahrscheinlich eine Frage, aber da es sich bezieht ich auf Swiftmailer dachte ich zuerst hier versuchen. Vielen Dank!

Antwort

2

SendGrid expects a JSON key/value structure in the X-SMTPAPI header entry verwenden sollten.

Ich habe ein altes Projekt mit SwiftMailer 5.0.3. Dies ist, wie ich Kategoriewerte SendGrid senden:

$message->getHeaders()->addTextHeader('X-SMTPAPI', json_encode(array(
    'category' => $category, 
))); 

Anwendung dieses Muster zu Ihrem Beispiel:

$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

Dank! Dies war schwierig herauszufinden, da SendGrid die benutzerdefinierten Argumente im eigentlichen E-Mail-Header unterdrückt. – Acyra

+0

@Acyra - Ich habe meine Antwort aktualisiert, nachdem ich einen Blick auf die Dokumentation geworfen habe. Der erste Satz verweist auch auf die Dokumentation. – Sonny

2

Verfahren addTextHeader ist für einen Wert

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

Sie addParameterizedHeader Verfahren statt wie diese

$headers->addParameterizedHeader(
    ["customerAccountNumber" => "55555"], 
    ["activationAttempt" => "1"] 
); 
Verwandte Themen