我正在尝试处理退回邮件并发送给负责的系统管理员。
我使用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
如何获取退回邮件并将其发送给系统管理员?
答案 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/