我正在尝试使用.NET MailMessage类发送电子邮件,该类也可以添加return-path头,以便任何退回都返回到不同的电子邮件地址。代码如下:
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);每当我检查发送的电子邮件时,我都会检查邮件头,它似乎总是缺少return-path。要正确配置它,我是否遗漏了什么?正如我在上面所说的,我在我的开发机器(XP)上使用标准的Virtual Mail Server,但是它最终将在Windows2003上运行。
有没有人知道为什么它不能通过?
发布于 2009-01-26 16:26:04
返回路径是基于SMTP邮件发件人信封设置的。您可以使用Sender属性来执行此操作。
关于迟早会有的相关问题的另一个讨论:How can you set the SMTP envelope MAIL FROM using System.Net.Mail?
顺便说一句,如果您使用SmtpDeliveryMethod.PickupDirectoryFromIis,则“发件人”属性不会用作“邮件发件人”;您必须使用“网络”作为传递方法才能保留此值。我找不到任何解决此问题的方法。
PickupDirectoryFromIis, Sender property and SMTP MAIL FROM envelope
https://stackoverflow.com/questions/464876
复制相似问题