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

Unable to send Email through GoDaddy SMTP

我正在 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 所述)但两者均不工作

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

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

并且在 c# 中你可以使用 like

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);

它会起作用

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

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

想到的一些事情:

  1. 服务器可能会根据其数据库检查 FROM 地址,特别是您用于验证的用户帐户。虽然您可以在电子邮件的 header 中输入任何内容,但此字段必须是您经过身份验证的帐户的真实地址,并且只能是该地址(无描述性名称)。
  2. 无论端口如何,服务器可能需要使用 TLS 加密。
  3. 25端口比较常见,但是根据官方的RFC邮件提交应该使用587端口,试试吧。
  4. GoDaddy 可能只允许从他们自己的(托管)服务器连接到这些 SMTP 中继。

除非连接完全失败(这将指向第 4 条),否则服务器应该在某个时候发送某种错误消息。正如我在上面所写,我会推荐 testing/logging 交流,这应该会提供一些见解。

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

  1. 你可以试试这个代码

      smtp.Host = "relay-hosting.secureserver.net";    smtp.EnableSsl = false;    smtp.UseDefaultCredentials = false;    smtp.Port = 25;
    
        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();