2011-03-03 100 views
1

我有一个通讯脚本,它循环通过成员并向每个人发送一封邮件。这在以前运行良好,但随着数量的增加,脚本开始崩溃。我使用的是SwiftMailer,我收到的消息是“使用mail()发送失败作为PHP的默认邮件()”。尝试使用SMTP而不是本地mail()函数发送会有什么好处吗?或者我应该看看另一个解决方案。感谢任何指针。电子邮件帮助-php mail()或SMTP

回答

6

mail()函数实际上并未传递邮件。它只是将生成的邮件移交给系统的SMTP服务器。无论哪种方式,你将使用SMTP。

如果swiftmailer正在使用PHP的mail()函数,那么很可能是你的系统的SMTP设置变得麻木了。检查系统日志(特别是maillog)的线索,看看Swiftmailer是否会给你更好的错误信息。

+0

感谢@Marc B到处理通讯 - 我不知道有权访问此服务器上的/ var/log,这很痛苦。我会尝试让某人有权获取日志内容给我,然后从那里获取。如上面Marc提到的 – tferdo 2011-03-03 17:19:07

1

mail()函数用SMTP发送邮件。但是,您可能想尝试类似PEAR::Mail的内容。使用mail()将为每个消息打开一个新的SMTP连接,这在循环内部执行效率相当低。这可能会导致你的错误,尽管有这样一个通用的错误信息,不可能没有更多的挖掘。

+0

,我会尝试获取邮件日志的内容,并希望在那里会有线索。目前我所能看到的是一个Swift_ConnectionException正在抛出该通用错误。我只是发现了这个,这可能会有所帮助:Swift_Plugins_AntiFloodPlugin - http://swiftmailer.org/docs/antiflood-plugin-howto – tferdo 2011-03-03 17:21:27

3

按照suggestions of the smart guy who developed Swiftmail和proabably猛敲他的头就这些问题(为了避免你和我做一样的),它可以帮助你使用SMTP,而不是mail运输

以我的经验 - 和其他人 - 邮件()函数不是 特别可预测或有帮助。

非常值得注意的是,Linux和Windows服务器之间的mail()函数的行为完全不同 。在Linux上它使用sendmail,但在 Windows上它使用SMTP。 ......使用这种传输时

严重的缺点是:

  • 不可预知的消息头
  • 缺乏反馈意见交付 故障
  • 缺乏对于需要实时几个插件支持 送货信息反馈

这是最后一招,我们说用passi上!

而且在同一页面上,他还介绍了如何通过简单地在迭代到现场,而不是读部分在同一页上发送的批量电子邮件