使用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属性完成。
答案 0 :(得分:7)
MailMessage.Sender
将始终插入Sender
标头(在您的电子邮件客户端中代表解释为)。
如果您使用Network
上的SmtpClient
投放方式,.Sender
也会更改信封中的发件人。使用PickupDirectoryFromIis
传递方法将其留给IIS以确定信封发件人,IIS将使用From
地址,而不是Sender
地址。
答案 1 :(得分:4)
我刚刚找到了如何做到这一点:
就是这样(即使我花了一段时间来弄明白)
答案 2 :(得分:2)
如果添加以下行,则会在邮件标题中设置Return-Path和Reply-To标题。
Dim strReplyTo As String = "email@domain.tld"
message.ReplyToList.Add(strReplyTo)
message.Headers.Add("Return-Path", strReplyTo)
如果您点击回复设置为回复地址的电子邮件
答案 3 :(得分:1)
你是说这个吗?:
//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. <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);