2

a 使用 Zend Mail/Log 有困难。但很可能是 Zend Mail。在我看来,我缺少一些有关使用 Zend Mail 发送电子邮件的重要信息。如果您能给我一些提示,那就太好了。

那么问题是什么:

我有两个动作:注册和登录。

在注册时,我首先记录有一个像这样的新帐户:

$message = 'New Account: Email: ' . $email;                    
$logger->warn($message);

我有一个非常复杂的日志记录到 db 文件和邮件。如果优先级等于或高于 WARN,我会发送电子邮件。但回到注册动作。

登录后,我将新帐户放入数据库,并在操作结束时向用户发送电子邮件,如下所示:

$mail = new Zend_Mail('UTF-8');
$mail->setFrom(bla@bla.com);
$mail->setReplyTo(bla@bla.com);
$mail->addTo(user_email);
$mail->setSubject($subject);
$mail->setBodyText($message);
$mail->send();

这就是注册。现在登录操作。只有日志,没有给用户的电子邮件,所以是这样的:

$message = "Login: $email";
$logger->warn($message);

这就是登录的全部内容。

问题是我从未收到注册操作的日志电子邮件。我可以在数据库和文件中找到日志,但邮件没有发送。

我迷路了,但我怀疑问题可能出在一次操作中发送多封电子邮件时。

非常感谢任何帮助,

大卫

更新

  • 我发现我在通过邮件+邮件记录到用户的所有操作中都有这个问题

  • 我在 apache 错误日志中发现了这一点:PHP 警告:无法通过电子邮件发送日志条目;message = 没有建立到“带有应用程序的服务器的公共 IP”的连接;代码 = 0; 异常类 = Zend_Mail_Protocol_Exception in /usr/local/share/ZendFramework-1.11.6/library/Zend/Log/Writer/Mail.php 410 行

  • 在 /usr/local/share/ZendFramework-1.11.6/library/Zend/Log/Writer/Mail.php 的 410 处,有:

    try {
        $this->_mail->send();
    } catch (Exception $e) {
        trigger_error(
            "unable to send log entries via email; " .
                "message = {$e->getMessage()}; " .
                "code = {$e->getCode()}; " .
                    "exception class = " . get_class($e),
            E_USER_WARNING);
    }
    
4

0 回答 0