在 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 中处理电子邮件退回的主要内容,如果未能解决你的问题,请参考以下文章

postfix邮箱服务

检查在 CakePHP 中发送电子邮件是不是成功/失败?

Postfix邮件服务器(基础)

使用Postfix与Dovecot部署邮件系统

如何配置 Flask Mail 以使用 Postfix

Postfix 将电子邮件中继到另一个域