【问题标题】:email not sending, no errors?电子邮件不发送,没有错误?
【发布时间】:2014-01-14 08:26:06
【问题描述】:

我正在使用这个简单的代码来尝试发送电子邮件:

    try
    {
        MailMessage newMail = new MailMessage();
        newMail.To.Add("me@mydomain.com");
        newMail.Subject = "test";
        newMail.Body = "test";
        newMail.From = new MailAddress("from@mydomain.com", "from");
        newMail.IsBodyHtml = true;

        SmtpClient SmtpSender = new SmtpClient();
        SmtpSender.Send(newMail);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

连同我的 web.config 文件中的以下代码:

<system.net>
<mailSettings>
  <smtp>
    <network host="localhost" userName="me@mydomain.com" password="password" defaultCredentials="true"/>
  </smtp>
</mailSettings>

我运行该页面,它没有错误地完成,但没有发送电子邮件。我做错了什么?

编辑:我已经根据我看过的许多示例更新了代码,现在正在使用一个名为 hMailServer 的本地 SMTP 客户端。我已经在 ASP.Net 之外测试了我的 hMailServer,它确实可以发送电子邮件。但是,使用上面的新代码还是不行,也不会抛出任何异常。

【问题讨论】:

  • 您确定没有电子邮件发送,还是您的意思是电子邮件没有到达您的收件箱?电子邮件有很多可能出错的地方,其中很少有与代码有关。 SMTP 服务器的响应是什么?如果将其指向您控制的服务器进行调试(例如 smtp4dev),会发生什么?
  • 尤其要查看您的 Gmail 发件箱。
  • 我刚查了一下,发件箱里没有邮件。不幸的是,我不控制用于调试的服务器。
  • 您是否位于不允许该端口出去的防火墙后面?
  • 我也尝试过使用 25 端口,我怀疑它被阻止了,因为我们有一个 smtp 服务器。我尝试在我的代码中使用它,但结果相同;没有错误,没有电子邮件。

标签: c# asp.net email


【解决方案1】:

如果您在其他地方托管您的电子邮件表单,您可能需要“检查”谁在您的表单上进行发送。

例如,GoDaddy 将阻止来自他们认为是高垃圾邮件来源的某些域的电子邮件(如 GMail、Hotmail 和 Yahoo! Mail)。

要解决此问题,请使用源自您域的电子邮件地址发送您的邮件,最好是假的,这样您就不会开始收到大量垃圾邮件:

private const string mailer = "no-reply@yourDomain.com";

继续并在您的网站管理员地址中编码,这是一个很好的措施:

private const string webmaster = "yourEmail@yourDomain.com";

在构建您的电子邮件时,您的联系人的电子邮件地址应在 Reply-To 字段中指定(来自以下代码中的txtEmail.Text):

lblError.Text = null;
using (var email = new System.Net.Mail.MailMessage(
  new MailAddress(mailer), new MailAddress(webmaster)) {
  email.ReplyTo = txtEmail.Text; // this comes off of your contact form
  string strHtmlBody =
    "<html><body style=\"background-color:#cccccc\">" +
    txtSubject.Text +
    "</body></html>";
  email.Subject = "Website Contact";
  email.Body = strHtmlBody;
  email.IsBodyHtml = true;
  var server = new SmtpClient("relay-hosting.secureserver.net");
  try {
    server.Send(email);
  } catch (Exception err) {
    lblError.Text = err.Message;
  }
}

【讨论】:

猜你喜欢
  • 2013-10-10
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 2021-06-19
  • 1970-01-01
  • 2020-01-08
  • 2021-01-25
  • 1970-01-01
相关资源
最近更新 更多