如何检查PEAR邮件SMTP身份验证失败


How to Check for PEAR Mail SMTP Authentication Failure

我正在构建一个SMTP电子邮件框架,该框架将具有用于发送电子邮件的默认用户名和密码(使用PHP的PEAR mail),但我希望具有为发送电子邮件提供备用电子邮件帐户凭据的功能。

因此,为了进行调试,我需要能够确定电子邮件无法发送的原因。有人知道一个很容易确定的故障是由身份验证问题引起的吗?

我使用无效密码运行了一个测试用例。显然要检查错误:

if (PEAR::isError($mail)) {
    echo("<p>" . $mail->getMessage() . "</p>");
} else {
    echo("<p>Message successfully sent!</p>");
}

错误消息为:

authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.3 Authentication unsuccessful)]

因此,我可以简单地解析这个字符串并确定它是"身份验证失败",但前提是我确信这将始终是身份验证失败时的响应。我想问大家的问题是,如果身份验证失败,我是否可以期望始终返回此消息,或者有人知道在尝试发送电子邮件之前或之后验证登录凭据的更简单的解决方案吗?

PEAR_Error对象具有分别获取错误代码和消息的方法:

  • getCode()
  • getMessage()

在邮件包的情况下,错误代码是SMTP错误代码,记录在RFC 5321中。