我正在使用Zend框架发送邮件。一旦配置完成并编写代码,一切都归结为一次调用:
$Mail->send($Transport)
如何检查此邮件是否已正确发送?我在某处读到 Zend Mail 抛出异常,但其他人说有时情况并非如此。
使用 Zend_Mail 时确保邮件正确发送的防弹编程方法是什么?
编辑:当我的意思是发送时,我的意思是发送到 SMTP 服务器。
通常,如果发送过程中出现问题,
Zend_Mail
会抛出异常 - 但这很大程度上取决于所使用的 Zend_Mail_Transport_*
。
您有两个选择:
Zend_Mail_Transport_Sendmail
(默认传输)依赖于mail()
。如果 mail()
返回 false
,则 Zend_Mail_Transport_Sendmail
会抛出 Zend_Mail_Transport_Exception
(无法发送邮件)。返回值本身不太可靠。这是手册上关于返回值的说法:
如果邮件已成功接受投递,则返回 TRUE,否则返回 FALSE。
需要注意的是,邮件被接受投递并不意味着邮件实际上会到达预期目的地。
Zend_Mail_Transport_Smtp
使用封装在 Zend_Mail_Protocol_Smtp
中的 SMTP 协议发送电子邮件。在这种情况下,每当出现违反 SMTP 协议(例如在未提供发件人地址的情况下发送邮件)或 STMP 服务器报告错误或连接超时时,您都会收到 Zend_Mail_Protocol_Exception
。
因此,如果与 STMP 服务器通信时没有抛出异常,您可以确定远程服务器至少接受了您的电子邮件。
我想不是的。如果“发送”失败,您会收到异常。但这只是检查 send() 函数是否正常工作。这并不意味着邮件已发送。
我想确保邮件送达的唯一方法是在邮件中插入确认码链接并让用户单击它。
要验证电子邮件是否已使用 Zend_Mail 发送,请检查 send() 方法的返回值。为了实现可靠的传送和跟踪,请考虑使用 IdealSMTP.com 强大的 SMTP 服务器来增强电子邮件验证并确保成功发送。