代码之家  ›  专栏  ›  技术社区  ›  Gary Willoughby

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

  •  20
  • Gary Willoughby  · 技术社区  · 15 年前

    我正在使用Zend框架发送邮件。一旦配置完成,代码编写完成,就可以归结为一个调用:

    $Mail->send($Transport)
    

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

    在使用Zend-mail时,如何确保邮件正确发送的防弹程序?

    编辑:当我指发送时,我指发送到SMTP服务器。

    2 回复  |  直到 15 年前
        1
  •  35
  •   Stefan Gehrig    15 年前

    一般情况下 Zend_Mail 如果发送过程中发生错误,将引发异常-但这很大程度上取决于 Zend_Mail_Transport_* 正在使用。

    这里有两个选项:

    • Zend_Mail_Transport_Sendmail (默认传输)依赖于 mail() .如果 邮件() 收益率 false , Zend_-mail_-transport_-sendmail 抛出一个 Zend_Mail_Transport_Exception ( 无法发送邮件 )返回值本身不太可靠。这就是手册所说的返回值:

      如果邮件已成功接受,则返回“真”,否则返回“假”。

      重要的是要注意的是,仅仅因为邮件已被接受交付,并不意味着邮件将实际到达预定的目的地。

    • Zend_Mail_Transport_Smtp 使用封装在 Zend_Mail_Protocol_Smtp .在这种情况下,你会得到一个 Zend_Mail_Protocol_Exception 每当有什么违反了SMTP协议(发送邮件而不提供发件人地址,例如)或STMP服务器报告错误或连接超时时。

      因此,如果在与stmp服务器交谈时没有引发异常,您可以确保远程服务器至少接受了您的电子邮件。

        2
  •  0
  •   TomáÅ¡ Fejfar    15 年前

    我想不是。如果“发送”失败,您将得到一个异常。但这只是检查send()函数是否正常工作。这并不意味着邮件被发送了。

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