使用Windows虚拟邮件服务器发送带有标题返回路径的电子邮件

时间:2009-01-21 11:17:48

标签: c# email mailmessage return-path

我正在尝试使用.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上运行。

有没有人知道为什么不能通过?

1 个答案:

答案 0 :(得分:4)

返回路径是根据SMTP MAIL FROM Envelope设置的。您可以使用Sender属性来执行此类操作 关于您迟早会遇到的相关问题的另一个讨论:How can you set the SMTP envelope MAIL FROM using System.Net.Mail?

顺便说一句,如果您使用SmtpDeliveryMethod.PickupDirectoryFromIis,则Sender属性不会用作MAIL FROM;您必须使用网络作为传递方法来保持此值。 我没有找到解决这个问题的方法。
PickupDirectoryFromIis, Sender property and SMTP MAIL FROM envelope