Обработка электронной почты отказов в CakePHP и Postfix - PullRequest
3 голосов
/ 29 июня 2010

Я пытаюсь обработать отклоненное сообщение и отправить ответственному системному администратору.

Я использую компонент электронной почты 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 Ответ

1 голос
/ 29 июня 2010

Я думаю, что вам нужно будет использовать SMTP (или, я полагаю, POP3) коннектор для PHP. Затем вам нужно будет создать свой собственный почтовый клиент 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. У него много плагинов; Вы можете найти базовый клиент SMTP PHP, который вы можете легко изменить, чтобы сделать то, что вам нужно. http://swiftmailer.org/

...