3

我正在尝试处理退回的消息并将其发送给负责的系统管理员。

我使用 CakePHP 电子邮件组件来发送消息。在服务器端,我使用 postfix 来传输消息。

function sendAsEmail($data) {
  $Email->sendAs = 'html';
  $Email->from = $user['Sender']['username'] . '@example.com';
  $Email->return = Configure::read('App.systemAdminEmail');
  $Email->bcc = array($data['Message']['recipient_text']);
  $content = 'Some content';
  $Email->send($content);
}

正如您在上面看到的,我将 $Email->return 设置为系统管理员的电子邮件,它将发送所有退回的邮件。

在后缀配置中,我尝试创建一个bounce.cf 模板并设置bounce_template_file。http://www.howtoforge.com/configure-custom-postfix-bounce-messages

如何获取退回的邮件并将其发送给系统管理员?

4

1 回答 1

1

我认为您需要做的是为 PHP 使用 SMTP(或者我想是 POP3)连接器。然后,您基本上必须创建自己的 PHP 电子邮件客户端,该客户端将登录到服务器,询问已退回的邮件,并适当地解析它们。

我认为会有一个 CakePHP 组件来解决这个问题,但我找不到。

我建议您在电子邮件中使用信封标题。否则,您将被困在试图解析收件人服务器反弹的过程中,而且这些非常不一致。如果您使用 VERP(可变信封返回协议?)标头,您可以将唯一的哈希编码到电子邮件地址中,这应该很容易在您的 PHPEmailClient 中解析出来。

有关 VERP 的更多信息:http ://en.wikipedia.org/wiki/Variable_envelope_return_path

蛋糕特定的 VERP 东西: http: //www.mainelydesign.com/blog/view/setting-envelope-from-header-cakephp-email-component

我还强烈建议您考虑使用 SwiftMailer。它有很多插件;您可能会找到一个基本的 PHP SMTP 客户端,您可以轻松修改它来满足您的需要。 http://swiftmailer.org/

于 2010-06-29T16:02:53.853 回答