Как настроить почтовый конверт SMTP с помощью System.Net.Mail?

Когда вы отправляете электронное письмо с использованием С# и пространства имен System.Net.Mail, вы можете установить свойства "От" и "Отправитель" в объекте MailMessage, но ни одно из них не позволяет сделать MAIL FROM и from адрес, который переходит в раздел DATA, отличающийся друг от друга. MAIL FROM получает значение "From", а если вы установите "Sender", он добавляет еще одно поле заголовка в раздел DATA. В результате "От [email protected] от имени [email protected]" это не то, что вы хотите. Я что-то пропустил?

Вариант использования - это контроль назначения NDR для бюллетеней и т.д., которые отправляются от имени кого-то другого.

В настоящее время я использую aspNetEmail вместо System.Net.Mail, поскольку он позволяет мне делать это правильно (как и большинство других SMTP библиотеки). С помощью aspNetEmail это выполняется с использованием свойства EmailMessage.ReversePath.

Ответы

Ответ 1

MailMessage.Sender всегда будет вставлять заголовок Sender (интерпретируется как от имени в вашем почтовом клиенте).

Если вы используете метод доставки Network на SmtpClient, .Sender также изменит отправителя в конверте. Используя метод доставки PickupDirectoryFromIis, он отправит его в IIS для определения отправителя конверта, а IIS будет использовать адрес From, а не адрес Sender.

Здесь есть аналогичный вопрос в MSDN.

Ответ 2

Я только что нашел, как это сделать:

  • mail.From указать адрес электронной почты от видимого для конечного пользователя
  • mail.Sender указывает конверт MAIL FROM

Что он (даже если мне потребовалось некоторое время, чтобы понять это)

Ответ 3

Если вы добавляете следующие строки, в заголовке почты устанавливаются строки Return-Path, а заголовки Reply-To.

Dim strReplyTo As String = "[email protected]"
message.ReplyToList.Add(strReplyTo)
message.Headers.Add("Return-Path", strReplyTo)

И если вы нажмете на ответ, то установите адрес электронной почты на адрес ответа на адрес

Ответ 4

Вы имеете в виду это?:

//create the mail message
 MailMessage mail = new MailMessage();

 //set the addresses
 mail.From = new MailAddress("[email protected]");
 mail.To.Add("[email protected]");

 //set the content
 mail.Subject = "This is an email";
 mail.Body = "this is a sample body with html in it. <b>This is bold</b> <font color=#336699>This is blue</font>";
 mail.IsBodyHtml = true;

 //send the message
 SmtpClient smtp = new SmtpClient("127.0.0.1");
 smtp.Send(mail);

От http://www.systemnetmail.com/faq/3.1.2.aspx