1

当用户在我的在线商店完成订单时,他会收到一封电子邮件确认。

目前,在我们授权用户的信用卡并且在我们向他显示确认消息之前(即同步),我们通过 Gmail(我们选择 sendmail 以提高便携性)发送这封电子邮件。

它在开发中运行良好,但我想知道这是否会导致生产问题。是否需要让用户等待太久?多个同时连接的 Gmail 是否会给我们带来麻烦?还有其他一般注意事项吗?

如果同步发送电子邮件是一个问题,有人可以推荐一个异步解决方案(ar_mailer有什么好处吗?)

4

4 回答 4

2

我能想到的主要问题是 Gmail 限制了您每天可以发送的电子邮件数量,因此如果您每天收到太多订单,它可能会中断。

正如他们所说 :

“为了打击垃圾邮件和防止滥用,如果您向超过 500 个收件人发送邮件或发送大量无法送达的邮件,Google 将暂时禁用您的帐户。如果您使用 POP 或 IMAP 客户端(Microsoft Outlook 或Apple Mail,例如),您一次只能向 100 人发送消息。您的帐户应在 24 小时内重新启用。”

http://mail.google.com/support/bin/answer.py?hl=en&answer=22839

我建议在您的服务器上使用 sendmail 以便更好地控制正在发生的事情并且不依赖于其他服务,尤其是当 sendmail 的设置并不复杂时。

于 2009-04-21T16:14:33.330 回答
1

互联网并不像某些人让你相信的那样有弹性,你和 GMail 之间的链接会在某个时候断开,或者 GMail 会离线,导致用户认为他们没有成功付款。

我会放置一些其他队列,sendmail 听起来可以接受,并且您现在不能为将来“可能”托管的位置创建您的站点。

瑞安

于 2009-04-21T16:16:17.913 回答
1

如果服务器在给用户任何反馈之前等待电子邮件发送,如果连接到邮件服务器时出现问题(超时、服务器停机等),用户请求也会超时,并且不会告诉他任何关于他的状态的信息顺序,所以我相信你真的应该异步执行此操作。此外,您应该检查 GMail 的 TOS 是否允许这样做。如果不是这种情况,您可以检查是否购买了他们的订阅之一。此外,您在给定时间范围内可以发送的外发电子邮件数量肯定是有限制的,因此如果您希望您的在线商店成功,您可能会达到该限制并遇到一些令人讨厌的问题。如果您不是自托管网站,

于 2009-04-21T16:16:51.093 回答
1

事实:Gmail 崩溃。不经常发生,但它会发生,你无法控制或测试它。

最简单的快速修复是启动一个单独的线程或派生一个子进程来发送电子邮件。是的,使用 Gmail 可能会出现问题,我真的没有关于替代品的意见。但从设计的角度来看,没有理由让用户等待该过程完成。

从测试的角度来看,这可能是代理模式可能派上用场的地方。您可能很容易直接调用 Gmail 来发送消息。让它更难。放入一个为您发送邮件的代理对象,您可以将其关闭(因为天堂知道您不能出于测试目的使 Gmail 崩溃)。只需关闭代理并尝试完成订单,即可让您的团队了解发生电子邮件故障时的情况。如果你是同步做的,那么其他海报这里提到的所有瘟疫都会抬起头来。如果您是异步执行的,您应该能够允许它静默失败(来自用户的

于 2009-04-21T16:31:22.697 回答