PHPMailer: установите пользовательский заголовок, чтобы идентифицировать его в электронном письме возврата

Я отправляю электронные письма с помощью PHPMailer. Когда электронное письмо возвращается, оно отправляется на такую ​​учетную запись: [email protected].

В моем почтовом клиенте, где я управляю этой учетной записью ([email protected]), у меня есть возможность добавлять фильтры для перенаправления электронной почты на любую другую учетную запись электронной почты на основе сравнения таких полей, как «Тема», «От». , «Кому» и так далее. Это хорошо.

Проблема в том, что возвращенное электронное письмо теряет все мои заголовки/тему... которые я установил с помощью PHPMailer, потому что оно ВСЕГДА составляется сервером следующим образом:

  • Тема: Недоставленное письмо возвращено отправителю
  • От: [email protected]
  • Кому: [email protected]
  • Дата: Сегодня чч:мм

Поэтому у меня нет направляющих для добавления фильтра.

Итак, есть ли способ установить отметку (например, настраиваемый заголовок и т. д.) в PHPMailer, которая ОСТАЕТСЯ в возвращенном письме? Например, что-то вроде этого:

  • Тема: Недоставленная почта возвращена отправителю (bounce_redirect)

Таким образом, слово «bounce_redirect» в теме (или где-либо еще) будет указывать моему почтовому клиенту, что это электронное письмо должно быть перенаправлено.

Заранее спасибо.


person Hector    schedule 04.05.2017    source источник


Ответы (1)


К сожалению, вы не можете решить эту проблему в заголовках; Единственный способ обойти это — использовать адресацию VERP, только так вы можете гарантировать что он сохраняет информацию о сообщении и о том, на какой адрес оно было первоначально отправлено. MS Exchange обычно отправляет рикошеты, в которых вообще не упоминается исходный адрес, на который было отправлено сообщение, поэтому VERP — единственное решение.

В вашем примере типичный адрес VERP будет таким:

[email protected]

Ваш почтовый сервер будет настроен на обнаружение префикса account_bounces и удаление его, а также преобразование = в @ в локальной части для извлечения исходного адреса.

В PHPMailer вы должны установить это как свое свойство Sender, например:

$mail->Sender = '[email protected]';

Он будет использоваться в качестве отправителя SMTP-конверта и преобразован принимающим сервером в заголовок Return-Path и, таким образом, будет использоваться в качестве адреса RCPT TO (пункт назначения возврата) при возврате сообщения.

Вы можете пойти дальше и добавить в адрес Sender дополнительную информацию, которую можно использовать для идентификации списка рассылки, конкретного почтового сообщения и т. д.

person Synchro    schedule 04.05.2017
comment
Вау, большое спасибо Synchro!, вы спасли Первомай. Я был так потерян. Но вы привели меня в нужное место. Я сделал небольшую модификацию, и она заработала (я использовал + вместо -). Просто следующим образом: $mail->Sender = '[email protected]'; - person Hector; 05.05.2017
comment
Я пытался использовать $mail->Sender = '[email protected];, но по какой-то причине я не получаю доставленное электронное письмо, но если я получаю: $mail->Sender = '[email protected]; Я получаю его... как я могу это исправить? - person sfarzoso; 12.11.2020
comment
Вы не можете просто установить его и заставить его работать — вам нужно настроить свой почтовый сервер так, чтобы он также определял входящие адреса, используя этот шаблон, и перенаправлял их в нужный почтовый ящик на вашем конце, как описано в документы postfix VERP - person Synchro; 12.11.2020