我有一个时事通讯脚本,它遍历成员并向每个成员单独发送邮件。这之前运行正常,但随着数量的增加,脚本已经开始在中途崩溃。我正在使用 SwiftMailer,我收到的消息是“使用 mail() 作为 PHP 的默认 mail() 发送失败”。尝试使用 SMTP 而不是本机 mail() 函数发送会有什么好处吗?或者我应该寻找另一种解决方案。感谢您的任何指示。
3 回答
实际上,该mail()
功能不传递邮件。它只是将您生成的邮件交给系统的 SMTP 服务器。无论哪种方式,您都将使用 SMTP。
如果 swiftmailer 使用 PHP 的 mail() 函数,那么很可能您系统的 SMTP 设置出了问题。检查系统日志(尤其是邮件日志)以获取线索,并查看 Swiftmailer 是否会为您提供更好的错误消息。
根据开发 Swiftmail 的聪明人的建议,并可能在这些问题上猛烈抨击(为了避免你我做同样的事情),它可能会帮助你使用 SMTP 而不是mail
传输
根据我和其他人的经验,mail() 函数并不是特别可预测或有帮助的。
值得注意的是,mail() 函数在 Linux 和 Windows 服务器之间的行为完全不同。在 linux 上它使用 sendmail,但在 Windows 上它使用 SMTP。...
使用此 Transport 时的严重缺点是:
- 不可预测的邮件标头
- 缺乏关于交付失败的反馈
- 缺乏对需要实时交付反馈的几个插件的支持
这是最后的手段,我们满怀热情地说!
此外,在同一页面上,他还解释了如何通过简单地遍历 to 字段而不是阅读同一页面上的批量发送电子邮件部分来处理新闻通讯
该mail()
函数使用 SMTP 发送电子邮件。但是,您可能想尝试类似的东西PEAR::Mail
。Usingmail()
将为每条消息打开一个新的 SMTP 连接,这在循环内执行效率相当低。这很可能会导致您的错误,尽管对于这样一个通用的错误消息,如果不进行更多挖掘就无法确定。