【问题标题】:Sending email to address not set将电子邮件发送到未设置的地址
【发布时间】:2014-04-01 21:32:49
【问题描述】:

我有这个代码

 var mail = new MailMessage(
                "from@from.com",
                "to@to.com",
                "subject",
                "body");
 mail.ReplyToList.Add(new MailAddress("from@from.com"));

 var client = new SmtpClient();

 client.Send(mail);

在我的 web.config 文件中

<system.net>
    <mailSettings>
      <smtp from="no-reply@no-reply.com">
        <network host="smtp.live.com" password="mypassword" port="587" userName="myemailaddress@hotmail.com" enableSsl="true" />
      </smtp>
    </mailSettings>
  </system.net>

问题是这样的:发送到 to@to.com 的电子邮件的收件人地址不是 from@from.com 而是 myemailaddress@hotmail.com。当我点击回复电子邮件地址时,因为我有这一行:

mail.ReplyToList.Add(new MailAddress("from@from.com"));

回复电子邮件地址确实设置为 from@from.com

我想要的是:

  1. 回复电子邮件地址为 from@from.com(现在这样)
  2. 收件人电子邮件地址也是 from@from.com

现在,在收到电子邮件的任何人看来,这封电子邮件来自 myemailaddress@hotmail.com。我认为我添加的 web.config 中的配置仅用于针对 smtp.live.com 邮件服务器进行身份验证,并且电子邮件地址不会用于正在发送的电子邮件中。

我做错了什么?

【问题讨论】:

  • What am I doing wrong? 你没有通过你自己的from.com 邮件服务器发送它。 Microsoft(和大多数其他主要邮件主机)不会允许您故意欺骗发件人地址。
  • 我明白了,所以我需要设置自己的电子邮件服务器吗?
  • ...或者,通过不需要身份验证的邮件服务器发送。或者,如果您实际上拥有您所指的 from.com 域,您现有的 DNS/Web 主机也可能提供此功能。如果您拥有该域,那么您实际上是在发送垃圾邮件,并且您的邮件可能会被收件人邮件服务器标记。本质上,不要“撒谎”。
  • 我明白了。发送的每封电子邮件的发件人电子邮件地址都不同。所以会有各种各样的领域。 sendgrid 需要身份验证吗?
  • from email address will be different for each email sent 作为发件人,您是否拥有每个不同的域?如果不是,您不应该让他们看起来像是来自这些域。

标签: c# email smtp smtpclient


【解决方案1】:

这里是您可以用来设置自己的 SMTP 服务器的指南。假设您拥有“from.com”,这将解决您的问题。

Have a look at the MSDN Documentation

如果您需要从多个不同的域发送电子邮件,您可以为每个域配置虚拟 SMTP 服务器。看看this article

如果您不拥有您尝试从中发送邮件的域,那么看起来您正在欺骗发件人地址。

【讨论】:

  • from.com 只是一个例子。我将从多个域发送电子邮件。
  • 但我不知道电子邮件来自哪个域。因此,我需要支持任何和所有域。
  • 我更新了答案以反映您无法使用any and all 域做您想做的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多