处理电子邮件在CakePHP和Postfix中退回

时间:2010-06-29 09:53:21

标签: php email cakephp postfix-mta

我正在尝试处理退回邮件并发送给负责的系统管理员。

我使用CakePHP Email Component发送消息。在服务器端,我使用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->返回sysadmin的电子邮件,它将发送所有退回邮件。

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

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

1 个答案:

答案 0 :(得分: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/