后台发送电子邮件的常见机制是什么?

后台发送电子邮件的常见机制是什么?

当用户注册我的网站时,我的服务器与第三方 SMTP 提供商之间的连接非常差,应用程序需要几秒钟到几分钟才能连接。在尝试连接和发送时,用户被迫等待,有时他们会放弃并离开网站。

这真是糟糕的用户体验。有什么好办法可以让这一切看起来是即时的(目前还不能托管我们自己的邮件服务器)?有什么办法可以在后台执行吗?也许可以使用某种类型的排队机制?

我在 CentOS 5 x64 机器上使用 LNAMP 堆栈。应用程序正在使用 CodeIgniter。

编辑:

使用本地邮件服务器作为中继似乎是一种常见的解决方案。但是,如何记录或跟踪使用此方法是否正确发送了电子邮件?

旁注:一些 ESP 提供用于电子邮件传送的 REST API(我们的也提供)。我们目前使用 SMTP,而不是他们的 REST API。

答案1

您可以使用 Postfix 作为空邮件程序(仅中继到 ISP)。这只不过是四行代码:

main.cf

myorigin = $mydomain
relayhost = $mydomain
inet_interfaces = loopback-only
local_transport = error:local delivery is disabled

参考:http://www.postfix.org/STANDARD_CONFIGURATION_README.html#null_client

答案2

运行本地 sendmail/qmail/postfix - 无论如何,将 smtp 服务器设置为 localhost。本地 MTA 将在可以时排队并传送(立即或在下一次排队运行时)。

在您的系统上:

# yum -y install sendmail
# chkconfig sendmail on
# service sendmail start

就足够了。

我对 CodeIgniter 不太了解,所以我无法帮助你。

答案3

不确定它有多常见(良好做法),但发送电子邮件是一个典型的异步过程。这个过程可能需要几秒钟甚至更长时间。这使得它成为使用消息队列的完美候选者。

传递方式是次要的,但第三方提供商如 SendGrid(用于交易电子邮件 - 忘记密码、发票等)或 MailChimp(用于时事通讯和营销)提供了良好的价值并且已被证明是可靠的。

我所说的消息队列是指 RabbitMQ (AMQ)、ZeroMQ、Gearman、AWS SQS 等。它们可用于应用程序之间的任何类型的信息交换。在这种情况下,它是某封电子邮件需要发送的信息。

就交付信息而言,可以通过此类提供商的 API 获得,或通过回调获得更昂贵的计划。

相关内容