我正在使用PHP邮件程序,有时我们的SMTP服务不可用(无法连接等)。在这些情况下,我想保存电子邮件以供稍后重试。
有一种简单的方法吗?如果没有,我可以自己保存部件,但有一种简单的方法可以保存附件吗?
我正在使用PHP 5.6.7
答案 0 :(得分:1)
你以错误的方式接近这个。处理此问题的正确方法不涉及PHPMailer。您要求的是MTA,即将为您处理排队和重试的邮件服务器。只需安装postfix并使用PHPMailer在localhost上提交它,你的排队问题就会神奇地解决。
如果要跟踪交付状态,您应该使用邮件服务器的管道功能
答案 1 :(得分:1)
好的 - 似乎没有一个简单的解决方案,所以我已经用它做得很好而且有效,所以我很高兴。我使用sqlite3将数据库队列保持为本地,以便它不必依赖可能关闭的外部连接并将附件存储在类似的文件夹树中以允许重复的文件名,并且我使用计划任务循环队列并重新发送电子邮件并从sqlite3数据库中删除文件和条目。如果再次失败,则会重新排队。
答案 2 :(得分:0)
主要的Phpmailer课程。
PHPMailer的:: SmtpSend():
if(!$this->SmtpConnect()) {
throw new phpmailerException($this->Lang('smtp_connect_failed'), self::STOP_CRITICAL);
}
也许您可以捕获该异常并序列化邮件程序对象。然后尝试稍后再发送(unserialise / send)。