Отправка электронной почты с обратным путем не работает - PullRequest
0 голосов
/ 18 января 2012

Я использую System.Net.Mail электронную почту.в коде я устанавливаю путь возврата электронной почты следующим образом:

string sReturnPath = ConfigurationManager.AppSettings["ReturnPath"].ToString();
if (sReturnPath.Length > 0) {
    msg.Headers.Add("Return-Path", sReturnPath);
}

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

есть идеи?

1 Ответ

11 голосов
/ 18 января 2012

Вы используете немного неправильный подход.Простой протокол пересылки почты ( RFC 2821 ) гласит:

Система SMTP, отправляющая сообщения, НЕ ДОЛЖНА отправлять сообщение, которое
уже содержит заголовок Return-path.SMTP-серверы, выполняющие функцию ретрансляции
, НЕ ДОЛЖНЫ проверять данные сообщения, и особенно не
в той степени, которая необходима для определения наличия заголовков обратного пути.

Если вы хотите, чтобы ваше сообщениечтобы быть возвращенным по адресу, отличному от адреса, указанного в поле From:, адрес должен быть установлен в SMTP-сообщении envelope , а не в сообщении header .Вы можете добиться этого, установив свойство Sender:

MailMessage msg = new MailMessage();
msg.Sender = new MailAddress("not-deliviered@sample.org", "Sam1");
...