Laravel Mail:如何为每个特定域发送批量电子邮件

时间:2016-11-30 09:41:34

标签: php laravel email laravel-5 smtp

我正在使用Laravel 5.2.45构建新闻通讯管理系统,该系统允许用户将大量电子邮件发送到邮件列表。截至目前,我的示例邮件列表包含数千个不同的电子邮件地址以及不同的电子邮件提供商,例如“@ gmail.com”,“@ hotmail.co.uk”等等。

当系统正在使用时,可能会在1000个不同的电子邮件中将简报发送到1000个,这让我可以提出这几个问题。

1)基于研究,我认为最大限度地减少Laravel在发送电子邮件时打开和关闭的连接数量是理想的。这意味着,为了订购提供商域并分批发送它们,所以一次性发送所有'@ gmail.com',这样只有一个连接打开并关闭到gmail服务器。这准确吗?

2)如果问题一是准确的,那么使用Laravel邮件(如果本地Laravel邮件有能力这样做)的最佳途径是什么?我知道能够使用Laravel邮件的队列功能,但我不确定这是否能确保每个域类型只打开和关闭一个连接。

3)此外,使用Laravel邮件类发送可能每天多次发送20,000封客户电子邮件的简报会产生任何负面影响吗?

谢谢,

基伦。

1 个答案:

答案 0 :(得分:0)

好吧,根据您配置邮件适配器的方式 - 是的,Laravel会为每个发送的电子邮件打开一个连接,如果您打算发送那么多电子邮件,这个效率不是很高。

我强烈建议您查看电子邮件提供商API:s而不是使用SMTP连接,其中大多数提供批处理功能。例如Mailgun:https://documentation.mailgun.com/user_manual.html#batch-sending。 Laravel支持开箱即用的Mailgun-API。

您的问题:

1)如果您在@ gmail.com,@ yahoo.com等域之后批量发送电子邮件,如果您只有一个to字段,则无关紧要例如,在for循环中,将通过SMTP为每个邮件建立新连接。连接已连接到发送域,而不是接收域。

2)即使你使用Mailguns批量发送功能,我肯定会考虑使用队列 - 效率更高。

3)对什么方式产生负面影响?当然,根据您构建邮件模板的方式,设置电子邮件数据和不存在 - 这可能会给服务器带来压力。但是没有任何东西不能用一些适当的编程来构建。