Laravel 5.2 - 使用专用IP通过SparkPost发送电子邮件

时间:2017-04-19 14:59:13

标签: php email laravel-5 laravel-5.2

我正在开发一个用Laravel 5.2编写的项目,该项目要求我通过专用IP地址发送电子邮件,以便我们可以将发件人的IP地址(在本例中为SparkPost)列入白名单,以便在企业环境,反垃圾邮件规则非常严格。

我已使用专用IP地址设置我的SparkPost帐户,我可以发送电子邮件,但是通过默认IP池发送电子邮件,而不是使用我的专用IP地址。因此,电子邮件被标记为垃圾邮件。

以下是SparkPost关于如何指定特定IP池的参考: https://support.sparkpost.com/customer/portal/articles/2002977

我的问题是:在使用Laravel的Mail::send方法时,如何指定使用专用IP?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

先生。如果您使用SMTP协议与SparkPost通信,Phoenix的响应可能会有效,但我的应用程序使用的是SparkPost的API。

在Mr.Phoenix的一点帮助之后(谢谢,顺便说一句),我能够追踪消息的发送方式,并发现createSparkPostDriver中的TransportManager方法已经一种根据您在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
相关问题