2017-01-16 165 views
0

我想在發送郵件之前在郵件中設置一些標籤。我準備了模板,數據等,但我如何爲郵件服務提供者(如mailgun)定義該字段來標記我的郵件?這是我到目前爲止:Laravel郵件標記

$messageData = array(
     'email' => '[email protected]', 
     'name' => 'My Client Name', 
     'subject' => 'My subject', 
     'tags' => array('my_tag1', 'my_tag1') 
    ); 
    Mail::queue($emailTemplate, ['data' => $templateBody], function ($message) use ($messageData) { 
     $message->to($messageData['email'], $messageData['name']) 
      ->subject($messageData['subject']); 
      //->embedSomehow('o:tag', $messageData['tags']) <- there is the problem 
    }); 
+0

mailgun標記是供應商特定的功能。如果你想這樣使用它,你需要擴展[Mail :: Message](https://github.com/illuminate/mail/blob/master/Message.php)來攜帶這些標籤,然後使用它在運輸時它建立API請求。 –

+0

@AlexBlex沒有一些數組可以填充到郵件正文中? – Aleksandar

回答

2

該字段o:tag(和許多其他)轉到標題部分。要設置標頭值在發送(排隊)的郵件,請執行下列操作:

$messageData = array(
    'email' => '[email protected]', 
    'name' => 'My Client Name', 
    'subject' => 'My subject', 
    'tags' => array('my_tag1', 'my_tag1') 
); 
Mail::queue($emailTemplate, ['data' => $templateBody], function ($message) use ($messageData) { 
    $message->to($messageData['email'], $messageData['name']) 
     ->subject($messageData['subject']); 

    $swiftMessage = $message->getSwiftMessage(); 

    $headers = $swiftMessage->getHeaders(); 
    $tags = json_encode(array('o:tag' => $messageData['tags'])); 
    $headers->addTextHeader('X-MSYS-API', $tags); // X-MSYS-API is header for SparkPostMail 
}); 

這樣你可以幾乎要與供應商特定的領域無論做。