【问题标题】:Using System.Net.Mail.SmtpClient, change the SMTP FROM email address使用 System.Net.Mail.SmtpClient,更改 SMTP FROM 电子邮件地址
【发布时间】:2012-04-20 06:39:16
【问题描述】:

正如标题中所说,我希望更改提供给 SMTP 服务器的 FROM 地址,而不是电子邮件信封中的 FROM 地址。

我能找到的最接近的示例来自 Java,即 can be found here

谢谢

【问题讨论】:

  • @Chris:那个链接指向这个页面...?

标签: c# email


【解决方案1】:

底线是,你不能这样做。 System.Net.Mail 中使用的 FROM 地址用于 SMTP 事务 (Envelope-From) 和来自标头值的 MailMessage。

对不起,
戴夫

【讨论】:

  • 是否可以使用 AspNetEmail?
  • 是的。在 aspNetEmail.EmailMessage 对象上,.ReversePath 属性的值在 SMTP 会话期间使用(信封发件人),而 .FromAddress 属性值用于实际的电子邮件消息。如果不设置 .ReversePath 属性,则在 SMTP 会话期间使用 .FromAddress 值。
【解决方案2】:

提供给SMTP服务器的FROM是SmtpClient的登录,而Mail中的FROM是MailMessage中的FROM。

SmtpClient smtp = new SmtpClient();
smtp.Host = "myserver.address.com";
smtp.Credentials = new NetworkCredential("me@server.com", "myPassword");

MailMessage msg = new MailMessage();
msg.From = "otherMe@server.com";

//OTHER MESSAGE SETTINGS

smtp.Send(msg);

这应该使用服务器上用户“me@server.com”的身份验证从“otherMe@server.com”发送一封电子邮件

【讨论】:

  • 我试过这个,并且 iv 监控了通过 WireShark 发送到服务器的流,它仍然使用信封的发件人地址作为 SMTP 的发件人地址。
【解决方案3】:

Java 示例是关于返回地址,而不是 From。

据我所知,你不能这样做。 SMTP 服务器使用 From 地址来决定是否要中继。

您拥有的唯一其他凭据是登录 SMTP 服务器。

【讨论】:

  • 对不起,为了更清楚,从示例中,我想要做的是发送不同的 MAIL FROM(在数据之前)到 From 地址(在数据中)。跨度>
  • 那么 il guru 有你的答案。
【解决方案4】:

很遗憾,这是不可能的。

首先,smtp.Host = smtp.serv.com; 存在语法错误,这不是有效的书面字符串类型,其次是属性 Host 不存在。

【讨论】:

    【解决方案5】:

    作为explained by bzlm,如果你使用的是SmtpClient的网络投递方式,那么你可以通过设置MailMessage.Sender属性来设置MAIL FROM。但是请注意,这会产生副作用,即在您的邮件中添加一个发件人,这将导致许多电子邮件客户端将邮件发件人显示为“X 代表 Y”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-15
      • 2018-04-30
      • 2011-09-09
      • 2011-03-11
      • 2013-01-24
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多