【问题标题】:C# Email sending error on Godaddy serverGodaddy服务器上的C#电子邮件发送错误
【发布时间】:2013-09-09 05:27:06
【问题描述】:

我有一个托管在 Godaddy 服务器上的 Web 应用程序。我遇到了发送邮件失败的错误。我把我的代码放在这里

public void Mailing()
{
 MailMessage message = new MailMessage();
 try
{
    MailAddress fromAddress = new MailAddress("mailadress@server.net");
    message.From = fromAddress;
    message.To.Add("toresive@server.com");
    message.CC.Add("ccresive@server.com");

    message.Subject = "Hello client";
    message.IsBodyHtml= true;
    string body = "Hello!<br> How are you?";

    message.Body = body;

    SmtpClient smtpClient = new SmtpClient();
    smtpClient.Host = "relay-hosting.secureserver.net";
    smtpClient.Port = 465;
    smtpClient.EnableSsl = false;
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = new NetworkCredential("mailadress@server.net", "Password");
   // AdvancedIntellect.Ssl.SslSocket ssl = new AdvancedIntellect.Ssl.SslSocket();
    smtpClient.Send(message);
    smtpClient.Timeout = 10000;
    }
    catch (Exception ex)
    {
        label2.Text = ex.Message;
    }
}

}

但我得到了错误

System.Net.Mail.SmtpException:发送邮件失败。 ---> System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:连接尝试失败 因为连接方在一段时间后没有正确响应 时间,或建立连接失败,因为连接的主机有 未能在 68.178.232.62:25 回复 System.Net.Sockets.Socket.DoConnect(端点 endPointSnapshot, SocketAddress 套接字地址)在 System.Net.ServicePoint.ConnectSocketInternal(布尔连接失败, Socket s4, Socket s6, Socket&socket, IPAddress&地址, ConnectSocketState 状态、IAsyncResult asyncResult、Int32 超时、 异常和异常)---内部异常堆栈跟踪结束---在 System.Net.ServicePoint.GetConnection(池化流池化流, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6,Int32 超时)在 System.Net.PooledStream.Activate(对象拥有对象,布尔异步, Int32 超时,GeneralAsyncDelegate asyncCallback) 在 System.Net.PooledStream.Activate(对象拥有对象, GeneralAsyncDelegate asyncCallback) 在 System.Net.ConnectionPool.GetConnection(对象拥有对象, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) 在 System.Net.Mail.SmtpConnection.GetConnection(服务点 服务点)在 System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint) 在 System.Net.Mail.SmtpClient.GetConnection() 在 System.Net.Mail.SmtpClient.Send(MailMessage message) --- 内部结束 异常堆栈跟踪 --- 在 System.Net.Mail.SmtpClient.Send(MailMessage 消息)在 Form1.Mailing() 在 c:\inetpub\vhosts\pay2school.net\httpdocs\IPTest\Admin\Form1.aspx.cs:line 139

我很依赖这个错误。 :( 我正在使用 smtpout.secureserver.net 更改我的 SMTP 服务器,但无法正常工作。 请帮帮我。提前致谢。

【问题讨论】:

  • 通常 smtp 在端口 25 上并且该端口是打开的。你确定465是正确的吗?它似乎不可用。你能telnet relay-hosting.secureserver.net 465 验证连接吗?
  • 嗨!是的 Godaddy 给了我这个端口。但在此之前,我已经使用了 25、3535、80 个端口。但是这些所有端口都发送相同的错误。
  • 我可以访问该服务器上的 25 端口,但不能访问 465 端口。
  • 嗨!谢谢你的答复。我也使用端口 25 现在错误是变化。 System.Net.Mail.SmtpException:服务器不支持安全连接。在 System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint) 在 System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint) 在 System.Net.Mail.SmtpClient.GetConnection() 在 System.Net.Mail.SmtpClient.Send (MailMessage 消息)在 Form1.Mailing() 处。
  • 端口 465 通常用于 SSL(所以 smtpClient.EnableSsl 应该是 true)...对于端口 25 它应该是 false

标签: c#


【解决方案1】:

EnableSsl 应该是真的。 如果您需要超时,则应在发送电子邮件之前设置其属性尝试像这样调整

SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = "relay-hosting.secureserver.net";
smtpClient.Port = 465;
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = 
          new NetworkCredential("mailadress@server.net", "Password");

...
smtpClient.Timeout = 10000;
smtpClient.Send(message);

【讨论】:

  • 由于默认是等待无限长的时间,这似乎没有回答问题。您能否澄清一下较短的超时时间会使其连接?
  • 您好!谢谢亲爱的你的回复。但它给了我新的错误“System.Net.Mail.SmtpException:操作已超时。在 System.Net.Mail.SmtpClient.Send(MailMessage message) at Form1.Mailing()。”
  • @user814064:你说得对,亲爱的。更短的时间不会使任何不同的接受更改错误文本。我认为问题出在 Goddady SMTP 服务器上。我们需要一些解决方案。有可能我错了。
【解决方案2】:

当我说我以前的 C# 工作代码(使用 Godaddy 服务器发送电子邮件)不再发送电子邮件时,我遇到了同样的问题。所以我花了5个小时找到实际问题

问题是 Godaddy 更改了他们服务器上的设置。因此,您将无法使用以下方式发送电子邮件:

  1. “smtpout.secureserver.net”主机。
  2. 本地主机(本地系统)。

我通过做两件事解决了这个问题:

  1. 使用 SmtpClient Host 作为“relay-hosting.secureserver.net”。

  2. 将我的网页放在我的 Godaddy 共享服务器上(因为 Godaddy 增加了安全性,本地主机仍然无法发送 smtp 电子邮件)。

这是我这边正确的工作代码

MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("test@yourdomain.com");
mailMessage.To.Add(new MailAddress("senderemail@gmail.com"));

mailMessage.Subject = "hello";
mailMessage.IsBodyHtml = true;
mailMessage.Body = "hello how are you";

SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential("test@yourdomain.com", "yourpassword");
client.Host = "relay-hosting.secureserver.net";
client.Send(mailMessage);

在上面的代码中看看我是如何添加主机的

client.Host = "relay-hosting.secureserver.net";

邮件将在 25 到 30 秒内送达您。如果您仍然找不到电子邮件,请检查您的垃圾邮件文件夹。

证明

在撰写此答案时,我测试了我的代码,发现发送电子邮件到我的 Gmail 收件箱。请参阅下图作为证明:

【讨论】:

    【解决方案3】:

    检查下面的代码。你要改client.Host = "smtpout.secureserver.net."

    MailMessage msg = new MailMessage(txtemail.Text, "shopover@vibrantinfosystems.com");
    msg.Subject = "Contact Us";
    string body = "Name: " + txtname.Text.Trim() + "";
    body += "<br />Email:" + txtemail.Text + "";
    body += "<br /><br /> Subject :" + txtsubject.Text + "";
    body += "<br /><br />Message : " + txtmessage.Text + "";
    msg.Body = body;
    
    msg.IsBodyHtml = true;
    
    SmtpClient client = new SmtpClient();
    client.Host = "smtpout.secureserver.net.";
    
    client.Send(msg);
    client.Timeout = 10000;
    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Mail Sent Successfully!!');", true);
    

    【讨论】:

    • smtpout.secureserver.net 已被 Godaddy 抛弃,现在改用“relay-hosting.secureserver.net”。
    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 2016-03-29
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多