13

当您使用 C# 和 System.Net.Mail 命名空间发送电子邮件时,您可以在 MailMessage 对象上设置“发件人”和“发件人”属性,但这些都不允许您创建 MAIL FROM 和发件人地址进入彼此不同的DATA部分。MAIL FROM 设置为“From”属性值,如果设置“Sender”,它只会在 DATA 部分添加另一个标题字段。这导致“代表 A@B.COM 来自 X@Y.COM”,这不是您想要的。我错过了什么吗?

用例控制代表其他人发送的新闻通讯等的 NDR 目的地。

我目前正在使用aspNetEmail而不是 System.Net.Mail,因为它允许我正确执行此操作(就像大多数其他 SMTP 库一样)。对于 aspNetEmail,这是使用 EmailMessage.ReversePath 属性完成的。

4

4 回答 4

7

MailMessage.Sender将始终插入一个Sender标题(在您的电子邮件客户端中被解释为代表)。

如果您使用的Network投递方式SmtpClient.Sender也会更改信封中的发件人。使用PickupDirectoryFromIis传递方法将由 IIS 来确定信封发件人,而 IIS 将使用From地址,而不是Sender地址。

MSDN 上有一个类似的问题。

于 2009-03-16T23:02:27.613 回答
4

我刚刚找到了如何做到这一点:

  • mail.From 指定对最终用户可见的电子邮件
  • mail.Sender 指定信封 MAIL FROM

就是这样(即使我花了一段时间才弄清楚)

于 2008-12-22T20:13:16.690 回答
2

如果添加以下行,则在邮件标题中设置 Return-Path 和 Reply-To 标题。

Dim strReplyTo As String = "email@domain.tld"
message.ReplyToList.Add(strReplyTo)
message.Headers.Add("Return-Path", strReplyTo)

如果您单击回复电子邮件设置为回复地址

于 2016-09-27T13:50:49.303 回答
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);

来自http://www.systemnetmail.com/faq/3.1.2.aspx

于 2008-09-09T13:17:09.023 回答