在 CakePHP 和 Postfix 中处理电子邮件退回
Posted
技术标签:
【中文标题】在 CakePHP 和 Postfix 中处理电子邮件退回【英文标题】:Processing an Email Bounce back in CakePHP and Postfix 【发布时间】:2011-03-09 13:09:19 【问题描述】:我正在尝试处理退回的邮件并将其发送给负责的系统管理员。
我使用 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
如何获取退回的邮件并将其发送给系统管理员?
【问题讨论】:
...你的问题是什么? 【参考方案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/
【讨论】:
以上是关于在 CakePHP 和 Postfix 中处理电子邮件退回的主要内容,如果未能解决你的问题,请参考以下文章