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); }