3

此代码在本地工作,但是当我将其上传到 Godaddy 上的服务器时,它不会发送电子邮件。知道为什么它在他们的服务器上不起作用吗?我需要改变什么?

try {
    MailMessage mail = new MailMessage();
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

    mail.From = new MailAddress("Myemail@gmail.com");
    mail.To.Add("Myemail@gmail.com");
    mail.Subject = "New sign up";
    mail.Body = "New member";

    SmtpServer.Port = 587;
    SmtpServer.Credentials = new System.Net.NetworkCredential("Myemail@gmail.com", "**Mypass**");
    SmtpServer.EnableSsl = true;

    SmtpServer.Send(mail);
} catch(Exception ex) {
    throw ex;
}
4

4 回答 4

2

他们可能会阻止传出的 SMTP 连接,以防止垃圾邮件发送者使用他们的服务发送垃圾邮件。您应该检查您收到的错误消息并检查您的服务器主机的策略。

于 2011-12-19T01:22:11.450 回答
2

从 Godaddy 托管的网站内部发送时,您需要做几件事。使用他们的中继服务器发送消息(这在您的开发机器上不起作用,您必须在上传后对其进行实时测试)。是中继服务器信息。还要确保“发件人”地址是同一域中的电子邮件。我通常使用与 toAddress 相同的方法。请参阅此处了解为什么这是必要的信息。

这是我用来从 Godaddy 内部站点发送的代码:

        btnSend.Disabled = true;

        const string serverHost = "relay-hosting.secureserver.net";
        var msg = new MailMessage(toAddress, toAddress);
        msg.ReplyTo = new MailAddress(emailFrom);

        msg.Subject = subject;
        msg.Body = emailBody;
        msg.IsBodyHtml = false;

        try
        {
            var smtp = new SmtpClient();
            smtp.Host = serverHost;
            smtp.Credentials = new System.Net.NetworkCredential("account", "password");
            smtp.Send(msg);
        }
        catch (Exception e)
        {
            //Log the errors so that we can see them somewhere
        }
于 2011-12-19T02:36:02.380 回答
0

您需要通过 godaddy smtp 服务器发送您的电子邮件。在我思考之前,我与他们遇到了同样的问题。我相信他们会通过常见问题解答提供有关如何登录的说明。

于 2011-12-19T01:23:06.647 回答
0

如果您可以通过 ssh 访问服务器,请尝试通过 25 和 465 端口远程登录 smtp.google.com。如果您遇到超时,那么您很可能会被防火墙阻止连接到特定 IP 范围之外的这些端口。端口 587 用于 TLS。当您使用 SSL 时,请尝试使用端口 465。

于 2011-12-19T01:23:52.937 回答