当使用C#和System.Net.Mail命名空间发送电子邮件时,可以在MailMessage对象上设置"发件人"和"发件人"属性,但是这两个属性都不允许您创建MAIL FROM和发件人的地址 进入彼此不同的DATA部分。 MAIL FROM设置为" From"属性值,如果设置为" Sender",则仅在DATA节中添加另一个头字段。 这将导致"不是从X@Y.COM代表A@B.COM",而是您不需要的。 我想念什么吗?
用例正在控制代表其他人发送的新闻通讯等的NDR目的地。
我目前正在使用aspNetEmail而不是System.Net.Mail,因为它可以让我正确地执行此操作(就像大多数其他SMTP库一样)。 使用aspNetEmail,可以使用EmailMessage.ReversePath属性完成此操作。
MailMessage.Sender将始终插入Sender标头(在您的电子邮件客户端中代表)。
如果在SmtpClient上使用Network传送方法,则.Sender也会更改信封中的发件人。使用PickupDirectoryFromIis传递方法会将其留给IIS确定信封发件人,并且IIS将使用From地址,而不是Sender地址。
MSDN上也有类似的问题。
我刚刚找到了怎么做:
-
mail.From指定对最终用户可见的电子邮件
-
mail.Sender指定信封MAIL FROM
就这样(即使我花了一段时间才弄清楚)
如果添加以下行,则在邮件头中设置Return-Path和Reply-To头。
1 2 3
| Dim strReplyTo As String ="email@domain.tld"
message.ReplyToList.Add(strReplyTo)
message.Headers.Add("Return-Path", strReplyTo) |
如果单击"答复",则将电子邮件设置为"答复至"地址
你是这个意思吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| //create the mail message
MailMessage mail = new MailMessage();
//set the addresses
mail.From = new MailAddress("me@mycompany.com");
mail.To.Add("you@yourcompany.com");
//set the content
mail.Subject ="This is an email";
mail.Body ="this is a sample body with html in it. This is bold <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