我正在使用Zend框架发送邮件。一旦配置完成并且代码编写完全归结为一次调用:
$Mail->send($Transport)
如何检查此邮件是否已正确发送?我读过Zend Mail引发异常的地方,但其他人说这有时并非如此。
使用Zend_Mail时,确保邮件正确发送的防弹程序化方法是什么?
编辑:当我的意思是发送时,我的意思是发送到SMTP服务器。
答案 0 :(得分:35)
如果发送过程发生错误,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服务器通话时没有抛出异常,您可以确定远程服务器至少接受了您的电子邮件。
答案 1 :(得分:0)
我猜不是。如果“发送”失败,则会出现异常。但这只是一个检查,send()函数正常工作。这并不意味着邮件已发送。
我想传送邮件的唯一方法是在邮件中插入一个确认码链接并让用户点击它。