Laravel 5.2 - 使用专用 IP 通过 SparkPost 发送电子邮件
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?
在文档中它指定您必须添加一个额外的 header 以便它可以通过特定的 ip
路由它
X-MSYS-API: { "options" : { "ip_pool" : "my_new_ip_pool" } }
否则使用默认值。
Mail::send
不提供任何添加额外 header 的快捷方式,因此您必须使用底层的 Swift 消息。不太确定 header 的值。尝试将邮件 driver 设置为 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.
在 Mr.Phoenix 的帮助下(谢谢你,顺便说一句),我能够追踪消息是如何发送的,并发现 createSparkPostDriver
方法在 TransportManager
有一种方法可以根据您在 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
我正在做一个用 Laravel 5.2 编写的项目,该项目要求我通过专用 IP 地址发送电子邮件,以便我们可以将发件人(在本例中为 SparkPost)的 IP 地址列入白名单,以允许在具有非常严格的反垃圾邮件规则的企业环境中的交付能力。
我已经使用专用 IP 地址设置了我的 SparkPost 帐户,我可以发送电子邮件,但我是通过默认 IP 池发送电子邮件,而不是使用我的专用 IP 地址。结果,电子邮件被标记为垃圾邮件。
以下是来自 SparkPost 的关于如何指定特定 IP 池的参考资料: https://support.sparkpost.com/customer/portal/articles/2002977
我的问题是:如何在使用Laravel的Mail::send
方法时指定使用专用IP?
在文档中它指定您必须添加一个额外的 header 以便它可以通过特定的 ip
路由它X-MSYS-API: { "options" : { "ip_pool" : "my_new_ip_pool" } }
否则使用默认值。
Mail::send
不提供任何添加额外 header 的快捷方式,因此您必须使用底层的 Swift 消息。不太确定 header 的值。尝试将邮件 driver 设置为 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.
在 Mr.Phoenix 的帮助下(谢谢你,顺便说一句),我能够追踪消息是如何发送的,并发现 createSparkPostDriver
方法在 TransportManager
有一种方法可以根据您在 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