Laravel 5.2 - 使用专用IP通过SparkPost发送电子邮件
我正在开发一个用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?
凤凰先生的回应,如果您使用的是SMTP协议与SparkPost沟通,但我的应用程序使用SparkPost的API可能会奏效。
后从Mr.Phoenix的一点点帮助(谢谢你,顺便说一句),我是能够跟踪是如何被发送的消息,结果发现,在TransportManager
的createSparkPostDriver
方法有一个方法来配置选项基于您在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
它规定你必须添加额外的报头,因此可以将其路由通过特定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" } }')
});
感谢您的帮助!我结束了使用API选项而不是SMTP标头。 – BakerStreetSystems