[英]Laravel 5.2 - Send Email Through SparkPost Using Dedicated IP
我正在做一个用Laravel 5.2编写的项目,该项目要求我通过专用IP地址发送电子邮件,以便我们可以将发件人(在本例中为SparkPost)的IP地址列入白名单,以便在非常严格的公司环境中实现可交付性反垃圾邮件规则。
我已经使用专用IP地址设置了我的SparkPost帐户,并且可以发送电子邮件,但是通过默认IP池而不是使用专用IP地址来发送电子邮件。 结果,电子邮件被标记为垃圾邮件。
这是SparkPost关于如何指定特定IP池的参考: https : //support.sparkpost.com/customer/portal/articles/2002977
我的问题是:使用Laravel的Mail::send
方法时,如何指定使用专用IP?
在文档中,它指定您必须添加一个附加标头,以便它可以通过特定的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" } }')
});
如果您使用SMTP协议与SparkPost通信,Phoenix先生的响应可能会起作用,但是我的应用程序正在使用SparkPost的API。
在凤凰先生的帮助下(谢谢,顺便说一句),我能够跟踪消息的发送方式,发现TransportManager
中的createSparkPostDriver
方法可以根据您在其中显示的内容来配置选项。您的services.php
文件位于config
文件夹中。
最后,我要做的就是将以下内容添加到我的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.