Как вы можете установить SMTP-конверт MAIL FROM с помощью System.Net.Mail?

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
13
0
15 974
4

Ответы 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

Нет, адрес mail.From будет определять ОТМЕТЬ ПОЧТУ в конверте и в разделе ДАННЫЕ. Я хочу сделать эти два разных адреса.

Eric Z Beard 09.09.2008 17:22

mail.From адрес не обязательно определяет ПОЧТУ ОТ в конверте. Это зависит от способа доставки.

bzlm 17.03.2009 10:54

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

  • mail. Укажите адрес электронной почты, который будет виден конечному пользователю.
  • mail.Sender указывает конверт ПОЧТА ОТ

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

Нет, как упоминалось в моем вопросе: и если вы установите «Отправитель», он только добавит еще одно поле заголовка в раздел ДАННЫЕ. В результате получается сообщение «От [email protected] от имени [email protected]», чего вы не хотите.

Eric Z Beard 23.12.2008 21:20

Я понимаю что ты имеешь ввиду. Я анализировал пакеты с помощью Wireshark, и конверт MAIL FROM был правильно установлен. Я не видел никаких проблем с использованием GMail или AOL (отправитель, от, к и обратный путь установлены правильно). Но когда я использую свою учетную запись hotmail или свой сервер обмена, я вижу то же сообщение, что и вы.

Romhein 24.12.2008 00:15

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

bzlm 17.03.2009 10:57

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

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

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

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

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

И если вы нажмете на ответ, электронное письмо будет установлено на адрес для ответа.

+1. Я тестировал с Outlook, вроде работает. Мне интересно, можно ли быть на 100% уверенным, что все почтовые клиенты уважают заголовок Reply-To и отвечают на адрес, указанный в этом заголовке.

Azimuth 08.12.2016 16:54

Return-Path не будет работать в заголовке. Он всегда принимает адрес электронной почты для возврата, даже ваш отправитель или ваш адрес отправителя в system.net.mail.

Naveen 29.01.2018 10:24

Другие вопросы по теме