2017-01-16 184 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 
}); 

这样你可以几乎要与供应商特定的领域无论做。