2016-03-07 122 views
6

所以我使用Laravel 5.1並嘗試與Mailgun集成。那麼,這很容易,但現在我試圖從我的應用程序發送custom variables以及我的電子郵件。使用Laravel的Mailgun驅動程序,您如何(優雅地)使用電子郵件發送自定義數據和標籤?

我實際上將我們的應用程序從Mandrill轉換爲因爲它們的「新方向」等。有了它們,我可以通過電子郵件標題提供變量和標籤,但使用Mailgun時,只有通過SMTP發送時才能使用。在Laravel中,Mail::send()使用API​​調用,所以理論上我會在那裏添加元數據"v:my-custom-data" => "{"this_id": 123}",但我想避免改變這樣的核心類。

我也考慮過使用Bogardo/Mailgun,但後來我不得不用​​全部更換爲Mail::send() s,然後我本地無法發送電子郵件(環境基於電子郵件的驅動程序),然後應用程序將是「結婚」到Mailgun。

以前有人做過這個嗎?如果我不清楚,請告訴我。

回答

15

我修復了我自己的問題。我錯了,YOU CAN通過SMTP方式添加自定義變量:

// Send email with custom variables and tags in Laravel 
Mail::send('emails.blank', 
    ['html' => 'This is a test of Mailgun. <strong>How did it work out?</strong>'], 
    function($message) { 
     $message->to('[email protected]'); 
     $message->subject('Mailgun API Test'); 

     $headers = $message->getHeaders(); 
     $headers->addTextHeader('X-Mailgun-Variables', '{"msg_id": "666", "my_campaign_id": 1313}'); 
     $headers->addTextHeader('X-Mailgun-Tag', 'test-tag'); 
    }); 

我的測試只是不足。但很高興知道。文檔沒有真正解釋這一點。

+0

作爲一個側面說明,SparkPost的API不行爲這種方式,儘管有類似的元數據處理。我最近嘗試過。 –

1

你可以做這樣的Laravel 5:

Mail::send(['text' => 'my_template'], $data, function ($message) { 
    .. 
    $message->getSwiftMessage()->getHeaders()->addTextHeader('X-Mailgun-Tag', 'my-tag'); 
}); 
相關問題