Как настроить почтовый конверт 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