2017-04-19 77 views
0

我正在開發一個用Laravel 5.2編寫的項目,該項目要求我通過專用IP地址發送電子郵件,以便我們可以將發件人的IP地址列入白名單(在這種情況下,SparkPost),允許在企業環境中以非常嚴格的反垃圾郵件規則進行傳遞。Laravel 5.2 - 使用專用IP通過SparkPost發送電子郵件

我已經使用專用IP地址設置了我的SparkPost帳戶,我可以發送電子郵件,但是通過默認IP池發送電子郵件而不是使用我的專用IP地址。結果,電子郵件被標記爲垃圾郵件。

這裏是SparkPost有關如何指定一個特定的IP池的引用: https://support.sparkpost.com/customer/portal/articles/2002977

我的問題是:我如何指定使用Laravel的Mail::send方法時要使用專用的IP?

回答

0

鳳凰先生的迴應,如果您使用的是SMTP協議與SparkPost溝通,但我的應用程序使用SparkPost的API可能會奏效。

後從Mr.Phoenix的一點點幫助(謝謝你,順便說一句),我是能夠跟蹤是如何被髮送的消息,結果發現,在TransportManagercreateSparkPostDriver方法有一個方法來配置選項基於您在config文件夾中的services.php文件中指示的內容。

最後,我不得不做的是以下內容添加到我的services.php文件:

'sparkpost' => [ 
    'secret' => env('SPARKPOST_SECRET'), 
    'options' => [ 
     "ip_pool" => env('SPARKPOST_IP_POOL_ID'), 
    ] 
], 

然後是變量添加到我的.env文件:

SPARKPOST_SECRET=abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd 
SPARKPOST_IP_POOL_ID=dedicated_ip_pool 
1
文檔中

它規定你必須添加額外的報頭,因此可以將其路由通過特定IP

X-MSYS-API: { "options" : { "ip_pool" : "my_new_ip_pool" } }

否則使用默認值。

Mail::send不提供用於添加額外標題的任何快捷方式,因此您必須使用基礎Swift消息。不太確定標題的值。嘗試使用設置爲log的郵件驅動程序進行測試。

Mail::send("template.blade",$data,function($message){ 
$message->getHeaders()->addTextHeader('X-MSYS-API', '{ "options" : { "ip_pool" : "my_new_ip_pool" } }') 
}); 

Mail::Send Laravel 5.2 SwiftMailer Headers documentation

+0

感謝您的幫助!我結束了使用API​​選項而不是SMTP標頭。 – BakerStreetSystems