【问题标题】:Email sending code working on localhost but not on server电子邮件发送代码在本地主机上工作但不在服务器上
【发布时间】:2016-08-25 00:59:24
【问题描述】:

我已经使用 c# 编写了一个电子邮件发送代码。我为我的网站使用了 GoDaddy 的服务器。它正在本地主机(VS 2013)上运行,但是当在服务器上部署相同的代码时,它会出现以下错误:


“/”应用程序中的服务器错误。

连接尝试失败,因为连接方没有 一段时间后正确响应,或建立连接 失败,因为连接的主机没有响应 [2607:f8b0:400e:c05::6c]:25

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详情: System.Net.Sockets.SocketException:连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应[2607:f8b0:400e:c05::6c]:25

堆栈跟踪:

[SocketException (0x274c):连接尝试失败,因为 关联方在一段时间后没有正确响应,或 建立连接失败 t SMS.Portal.SendSMS.btnSubmit_Click(Object sender, EventArgs e) in d:\Paul\ProximityMarketer\smsproximitysource\source\Portal\SendSMS.aspx.cs:30 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9633514 System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 事件参数)+103 System.Web.UI.WebControls.Button.System.Web...IPostBackEventHandler.RaisePostBackEvent(字符串 事件参数)+10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler 源控件,字符串事件参数)+13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint) +1724

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.34280


代码如下:

SmtpClient smtpclient = new SmtpClient();
smtpclient.Host = "smtp.gmail.com";
smtpclient.Port = 25;
smtpclient.Credentials = new NetworkCredential("xxxxx@gmail.com", "Password");
smtpclient.EnableSsl = true;
MailMessage objmsg = new MailMessage();
objmsg.From = new MailAddress("xxxxx@gmail.com");
objmsg.To.Add(email);
objmsg.Subject = "testing";
objmsg.Body = myString.ToString();
objmsg.IsBodyHtml = true;
smtpclient.Send(objmsg);

【问题讨论】:

  • smtpclient.Port = 25;你确定你可以在公共主机服务器上使用25端口吗?
  • 您是否有防火墙在托管服务器上阻止了这个?
  • gmail 不会使用端口 25,这是不安全的电子邮件。您需要使用端口号 587 的 TLS。请参阅 wbpage:support.google.com/a/answer/2956491
  • 使用 80 端口。感谢@vendettamit

标签: c# email visual-studio-2015 smtp smtpclient


【解决方案1】:

我找到了解决方案。有人向我推荐了这篇文章。 https://pk.godaddy.com/help/see-your-smtp-relays-3552。我使用了以下代码:

SmtpClient ss = new SmtpClient();
ss.Host = "smtpout.secureserver.net";
ss.Port = 80;
ss.Timeout = 10000;
ss.DeliveryMethod = SmtpDeliveryMethod.Network;
ss.UseDefaultCredentials = false;
ss.EnableSsl = false;
ss.Credentials = new NetworkCredential("abc@yourdomain.com", "password");

MailMessage mailMsg = new MailMessage("abc@yourdomain.com", email, "subject here", "my body");
mailMsg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
ss.Send(mailMsg);

注意:它不适用于端口 25。

【讨论】:

    【解决方案2】:

    请参考此网址并非常小心地按照说明进行操作。

    http://manylinks.me/mypage.aspx?Page_Id=dbi92Xm

    注意:阅读所有 3 个步骤。

    【讨论】:

    • 请发布实际代码,因为链接可能会随着时间的推移而损坏。 (但要感谢链接!)
    猜你喜欢
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2018-02-20
    • 2019-09-20
    • 2012-01-26
    • 1970-01-01
    • 2021-07-23
    • 2020-12-12
    相关资源
    最近更新 更多