发送邮件在本地工作但不在服务器上?

时间:2011-12-19 01:18:15

标签: c# smtp gmail sendmail ports

此代码在本地运行,但当我将其上传到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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

从Godaddy托管的网站内部发送时,您需要做几件事。使用他们的中继服务器发送消息(这不适用于您的开发机器,您必须在上传后进行实时测试)。 Here是中继服务器信息。还要确保“发件人”地址是同一域中的电子邮件。我通常使用与toAddress相同的内容。有关为何必要的信息,请参阅here

这是我用来从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
        }

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果您拥有对服务器的ssh访问权限,请尝试通过25和465端口telnet smtp.google.com。如果您超时,那么您可能会在某个IP范围之外连接到这些端口。 端口587用于TLS。当您使用SSL时,请尝试端口465。