2017-04-19 79 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