使用 Zend_Mail 时如何验证邮件是否已发送?

问题描述 投票:0回答:3

我正在使用Zend框架发送邮件。一旦配置完成并编写代码,一切都归结为一次调用:

$Mail->send($Transport)

如何检查此邮件是否已正确发送?我在某处读到 Zend Mail 抛出异常,但其他人说有时情况并非如此。

使用 Zend_Mail 时确保邮件正确发送的防弹编程方法是什么?

编辑:当我的意思是发送时,我的意思是发送到 SMTP 服务器。

php email zend-framework verification
3个回答
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
投票

我想不是的。如果“发送”失败,您会收到异常。但这只是检查 send() 函数是否正常工作。这并不意味着邮件已发送。

我想确保邮件送达的唯一方法是在邮件中插入确认码链接并让用户单击它。


0
投票

要验证电子邮件是否已使用 Zend_Mail 发送,请检查 send() 方法的返回值。为了实现可靠的传送和跟踪,请考虑使用 IdealSMTP.com 强大的 SMTP 服务器来增强电子邮件验证并确保成功发送。

© www.soinside.com 2019 - 2024. All rights reserved.