Отправка электронного письма с обратным путем заголовка с помощью виртуального почтового сервера Windows
-
19-08-2019 - |
Вопрос
Я пытаюсь отправить сообщение электронной почты, используя класс .NET MailMessage, в который также может быть добавлен заголовок пути возврата, чтобы любые возвраты возвращались на другой адрес электронной почты. Код ниже:
MailMessage mm = new MailMessage(
new MailAddress(string.Format("{0}<{1}>", email.FromName, email.FromEmail)),
new MailAddress(emailTo));
mm.Subject = ReplaceValues(email.Subject, nameValues);
mm.ReplyTo = new MailAddress(string.Format("{0}<{1}>", email.FromName, email.FromEmail));
mm.Headers.Add("Return-Path", ReturnEmail);
// Set the email html and plain text
// Removed because it is unneccsary for this example
// Now setup the smtp server
SmtpClient smtp = new SmtpClient();
smtp.Host = SmtpServer;
smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
if (SmtpUsername.Length > 0)
{
System.Net.NetworkCredential theCredential =
new System.Net.NetworkCredential(SmtpUsername, SmtpPassword);
smtp.Credentials = theCredential;
}
smtp.Send(mm);
Всякий раз, когда я проверяю отправленное письмо, я проверяю заголовок, и в нем всегда отсутствует обратный путь. Что-то мне не хватает, чтобы настроить это правильно? Как я уже говорил выше, я использую стандартный виртуальный почтовый сервер на своей машине разработки (XP), однако в конечном итоге он будет работать на Windows 2003.
У кого-нибудь есть идеи, почему это не проходит?
Решение
Return-Path устанавливается на основе SMTP MAIL FROM Envelope. Для этого можно использовать свойство Sender.
Еще одна дискуссия по связанной теме у вас рано или поздно возникнет: Как установить конверт SMTP MAIL FROM с помощью System.Net.Mail?
И, кстати, если вы используете SmtpDeliveryMethod.PickupDirectoryFromIis, свойство Sender не используется как MAIL FROM; Вы должны использовать Сеть как способ доставки, чтобы сохранить это значение.
Я не нашел решения этой проблемы.
PickupDirectoryFromIis, свойство Sender и конверт SMTP MAIL FROM