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