从我的网站发送C#的电子邮件

我使用以下代码发送电子邮件:

public static bool SendEmail(string To, string ToName, string From, string FromName, string Subject, string Body, bool IsBodyHTML) { try { MailAddress FromAddr = new MailAddress(From, FromName, System.Text.Encoding.UTF8); MailAddress ToAddr = new MailAddress(To, ToName, System.Text.Encoding.UTF8); var smtp = new SmtpClient { Host = "smtp.datagts.net", Port = 587, EnableSsl = false, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = true, Credentials = new System.Net.NetworkCredential("MeEmail@...", "Password") }; using (MailMessage message = new MailMessage(FromAddr, ToAddr) { Subject = Subject, Body = Body, IsBodyHtml = IsBodyHTML, BodyEncoding = System.Text.Encoding.UTF8, }) { smtp.Send(message); } return true; } catch { return false; } } 

它适用于本地,当我在我的本地IIS下使用我的网站时,但当我上传到我的网站时,它不起作用,即使发生任何错误也不会发送电子邮件。

有没有人帮我这个?

UPDATE1 :我删除了try catch并收到此消息的错误: Failure sending mail

更新2 :我更改了我的stmp服务器并使用我的Gmail帐户,请查看以下代码:

 public static bool SendEmail(string To, string ToName, string From, string FromName, string Subject, string Body, bool IsBodyHTML) { try { MailAddress FromAddr = new MailAddress(From, FromName, System.Text.Encoding.UTF8); MailAddress ToAddr = new MailAddress(To, ToName, System.Text.Encoding.UTF8); var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new System.Net.NetworkCredential("MeEmail@gmail.com", "Password") }; using (MailMessage message = new MailMessage(FromAddr, ToAddr) { Subject = Subject, Body = Body, IsBodyHtml = IsBodyHTML, BodyEncoding = System.Text.Encoding.UTF8, }) { smtp.Send(message); } return true; } catch { return false; } } 

现在我得到一个错误:(

我收到此链接中提到的“MustIssueStartTlsFirst”错误。 我现在正在尝试检查@EdFS点并使用端口25

更新3 :这是因为我使用共享服务器,我只是可以将端口更改为25,钢铁不起作用给出相同的错误,我试图从我的服务器备份团队获得支持

假设 SMTP服务器(smtp.datagts.net)运行正常,需要检查一些项:

  1. 您的代码似乎使用UseDefaultCredentials=true ,但在下一行您提供凭据
  2. 如评论中所述,请检查您的Web主机上是否未阻止端口587
  3. 如果您托管在共享服务器(而不是专用计算机)上,则ASP.Net 可能设置为medium trust如果是这样, 除了端口25之外 ,您不能将任何端口用于SMTP 。

更新:

试图找出错误。 在LOCAL (开发)计算机中,将其添加到web.config:

  ...    ... 

本地计算机上的ASP.Net以FULL TRUST运行。 上述设置使您正在处理的当前网站/应用程序以medium trust运行。 您可以根据需要删除/评论。 本练习的目的是尝试匹配您的Web主机设置(如果在您的本地计算机上工作然后在发布时死亡,则显然会有所不同)。 从您的网站主机获取信息会很高兴..但直到那时….

然后尝试端口587和25。

  • 它应该在端口587上失败并出现安全性exception(因为medium trust
  • 如果您的邮件服务器接受端口587上的SMTP连接,那么当然端口25也不会工作(但是您应该得到不同的错误)。 在这种情况下, “……它仍然不起作用……”的一点是SMTP服务器(smtp.datagts.net) 接受端口587上的连接

GMAIL是同一个故事。 如果ASP.Net的Web主机设置是medium trust则无法使用端口587。 我已经经历了这么多次 – 它将在我的本地机器中“工作”,但是一旦我在本地开发机器中启用medium trust ,它就会失败。

您应该询问您的Web主机他们对ASP.Net的设置是什么 – 如果它的某些“自定义”设置可以请求副本并在您的开发框中使用它。