无法通过GoDaddy SMTP发送电子邮件

时间:2018-05-19 11:08:52

标签: c# asp.net-mvc iis smtp smtpclient

我正在开发一个ASP .Net MVC网站,我通过Godaddy smtp发送电子邮件,以前我的网站是用经典ASP开发的,它是托管在godaddy的网站托管上的(然后它工作正常)但现在我在IIS上托管这个网站

我正在使用以下代码发送电子邮件,但它无效

MailMessage msg = new MailMessage();
msg.From = new MailAddress(model.From);
msg.To.Add(model.To);
msg.Body = model.Body;
msg.Subject = model.Subject;

SmtpClient smtp = new SmtpClient("relay-hosting.secureserver.net",25);
smtp.Credentials = new NetworkCredentials("support@{myCompanyName}.com",{password});
smtp.EnableSsl  = False;
smtp.Send(msg);

我还使用了 dedrelay.secureserver.net 而不是 relay-hosting.secureserver.net 主机(如https://pk.godaddy.com/help/what-is-my-servers-email-relay-server-16601所述)但两者都不起作用

6 个答案:

答案 0 :(得分:3)

GoDaddy不允许通过他们的服务器进行中继,除非您使用的是包含SMTP的托管计划之一。

答案 1 :(得分:1)

现在,对于出站电子邮件,大多数SMTP服务器都非常严格。我建议在假设代码出现问题之前,先用电子邮件客户端(或telnet,如果你是那种东西)测试参数。这也可能会给您一个有助于调试的错误消息。

有些事情会浮现在脑海中:

  1. 服务器可以根据其数据库检查FROM地址,特别是用于进行身份验证的用户帐户。虽然您可以在电子邮件的标题中放置您想要的任何内容,但此字段必须是您经过身份验证的帐户的真实地址,并且只有该字段(没有描述性名称)。
  2. 无论端口如何,服务器都可能需要使用TLS加密。
  3. 端口25很常见,但根据官方RFC邮件提交应该使用端口587.也许尝试一下。
  4. GoDaddy可能只允许从他们自己的(托管)服务器到这些SMTP中继的连接。
  5. 除非连接完全失败(这将指向第4个),否则服务器应该在某个时候发送某种错误消息。正如我上面所写,我建议测试/记录通信,这应该提供一些见解。

答案 2 :(得分:1)

也许您应该打电话给您的ISP,在荷兰,他们主要阻止端口25,因为恶意软件和用于发送电子邮件的蠕虫。它可以这么简单。您是否尝试过从本地计算机远程登录到电子邮件服务器(telnet mailserver.io 25)?如果最终结束时您得到了答案,则端口将在您的ISP或其末尾过滤掉。

答案 3 :(得分:1)

  1. 您可以尝试使用此代码

      smtp.Host = "relay-hosting.secureserver.net";    smtp.EnableSsl = false;    smtp.UseDefaultCredentials = false;    smtp.Port = 25;
    

答案 4 :(得分:0)

您可以在webconfig中设置您的凭据,例如(对于godaddy)

 <system.net>
  <mailSettings>
    <smtp from="your email address">
      <network host="relay-hosting.secureserver.net" port="25" />
    </smtp>
  </mailSettings>
</system.net>

在c#中你可以使用

MailMessage message = new MailMessage();
message.From = new MailAddress("your email address");

message.To.Add(new MailAddress("your recipient"));

message.Subject = "your subject";
message.Body = "content of your email";

SmtpClient client = new SmtpClient();
client.Send(message);

它会起作用

答案 5 :(得分:0)

        string From = "[MyGodaddyEMailAddress]"; //eg.info@mango.com
        string FromPassword = "[MyGodaddyMailPassword]";
        try
        {
            MailMessage msg = new MailMessage();
            msg.From = new MailAddress(From);
            msg.To.Add("[RecipientEmailAddress]");
            msg.Subject = "[MailSubject]";
            msg.Body = "[MailBody]";
            msg.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient("mail.[domain].com", 587); //eg. mail.mango.com
            smtp.Credentials = new System.Net.NetworkCredential(From, FromPassword);

            smtp.EnableSsl = false;

            // Sending the email
            smtp.Send(msg);
            // destroy the message after sent
            msg.Dispose();
            Console.WriteLine("Message Sent Successfully");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
        Console.ReadKey();