Разве Gmail не позволяет отправителю устанавливать значение пути возврата для получения сообщений об отказе?


Я использую почтовую программу Swift для проверки отскочивших сообщений. Я создал одну отдельную учетную запись для сообщений об отказе, однако, когда я устанавливаю обратный путь, он не позволяет отправлять сообщения об отказе в эту учетную запись. Это нормально или это ошибка кода?

$verp = 'bounces-' . str_replace('@', '=', $row['ReplyTo']) . '@gmail.com';

$message = Swift_Message::newInstance()
  ->setSubject($row['Subject'])
  ->setFrom(array($row['ReplyTo'] => $row['FromName']))
  ->setReturnPath($verp)
  ->setBody($html, 'text/html')
  ->addPart($txt, 'text/plain');

Сейчас я использую VERP, похоже, что он предназначен для обнаружения ошибки доставки? Но не для отправки сообщения в учетную запись электронной почты с отказом?

Author: Teun Zengerink, 2012-03-29

2 answers

Да, это нормально. При отправке электронной почты через SMTP-серверы Gmail обратный путь будет соответствовать учетной записи, с которой вы отправляете.

Ваше единственное решение - найти поставщика, который позволит вам задать обратный путь.

 5
Author: F21, 2012-03-29 12:39:45

Это не проблема gmail, это требование спецификации SMTP, как определено в разделе RFC 5321 4.4:

Система SMTP, отправляющая сообщения, НЕ ДОЛЖНА отправлять сообщение, которое уже содержит поле заголовка обратного пути.

Также говорится, что, хотя SMTP-системы вообще не должны проверять содержимое сообщений (т.Е. Они не просматривают заголовки), шлюз из какого-либо другого контекста для SMTP ДОЛЖЕН удалить любой заголовок обратного пути. Короче говоря, если вы сами добавляете заголовок обратного пути, вы делаете это неправильно.

Заголовок обратного пути, который вы видите в полученном сообщении, создается получателем, , а не отправителем, и является производным от команды SMTP MAIL FROM, используемой для доставки сообщения. Этот адрес не должен иметь ничего общего с заголовком адреса "От" в сообщении и указывает, куда должно быть отправлено сообщение в случае сбоя доставки, т. Е. Именно то, что вы хотите, чтобы адрес VERP для.

Я не знаю о SwiftMailer, но в PHPMailer вы можете установить значение отправителя конверта SMTP, установив свойство Sender, и получатель преобразует его в заголовок сообщения с обратным путем при приеме.

 2
Author: Synchro, 2016-09-07 06:57:06