Когда вы отправляете электронное письмо с использованием 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.





Вы имеете в виду это ?:
//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 адрес не обязательно определяет ПОЧТУ ОТ в конверте. Это зависит от способа доставки.
Я только что нашел, как это сделать:
Вот и все (даже если мне потребовалось время, чтобы понять это)
Нет, как упоминалось в моем вопросе: и если вы установите «Отправитель», он только добавит еще одно поле заголовка в раздел ДАННЫЕ. В результате получается сообщение «От [email protected] от имени [email protected]», чего вы не хотите.
Я понимаю что ты имеешь ввиду. Я анализировал пакеты с помощью Wireshark, и конверт MAIL FROM был правильно установлен. Я не видел никаких проблем с использованием GMail или AOL (отправитель, от, к и обратный путь установлены правильно). Но когда я использую свою учетную запись hotmail или свой сервер обмена, я вижу то же сообщение, что и вы.
Дело не в том, чтобы скрыть отправителя. Проблема в том, что почтовый конверт технически не является частью самого сообщения и что заголовок Return-Path окружен множеством сложных вопросов. Это означает, что фактический способ доставки повлияет на оба этих параметра.
MailMessage.Sender всегда будет вставлять заголовок Sender (интерпретируемый как от имени в вашем почтовом клиенте).
Если вы используете метод доставки Network на SmtpClient, .Sender также изменит отправителя в конверте. Использование метода доставки PickupDirectoryFromIis предоставит IIS возможность определить отправителя конверта, а IIS будет использовать адрес From, а не адрес Sender.
Если вы добавите следующие строки, заголовки 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 и отвечают на адрес, указанный в этом заголовке.
Return-Path не будет работать в заголовке. Он всегда принимает адрес электронной почты для возврата, даже ваш отправитель или ваш адрес отправителя в system.net.mail.
Нет, адрес mail.From будет определять ОТМЕТЬ ПОЧТУ в конверте и в разделе ДАННЫЕ. Я хочу сделать эти два разных адреса.