无法通过 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,如果你喜欢那种东西)测试参数。这也可能会给您一条有助于调试的错误消息。
想到的一些事情:
- 服务器可能会根据其数据库检查 FROM 地址,特别是您用于验证的用户帐户。虽然您可以在电子邮件的 header 中输入任何内容,但此字段必须是您经过身份验证的帐户的真实地址,并且只能是该地址(无描述性名称)。
- 无论端口如何,服务器可能需要使用 TLS 加密。
- 25端口比较常见,但是根据官方的RFC邮件提交应该使用587端口,试试吧。
- GoDaddy 可能只允许从他们自己的(托管)服务器连接到这些 SMTP 中继。
除非连接完全失败(这将指向第 4 条),否则服务器应该在某个时候发送某种错误消息。正如我在上面所写,我会推荐 testing/logging 交流,这应该会提供一些见解。
也许你应该打电话给你的 ISP,在荷兰,他们大多阻止端口 25,因为用于发送电子邮件的恶意软件和蠕虫。它可以这么简单。您是否尝试过从本地计算机远程登录到电子邮件服务器 (telnet mailserver.io 25)?如果这最终超时,您会得到答案,并且端口会在您的 ISP 处或从他们那端被过滤掉。
你可以试试这个代码
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();
我正在 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,如果你喜欢那种东西)测试参数。这也可能会给您一条有助于调试的错误消息。
想到的一些事情:
- 服务器可能会根据其数据库检查 FROM 地址,特别是您用于验证的用户帐户。虽然您可以在电子邮件的 header 中输入任何内容,但此字段必须是您经过身份验证的帐户的真实地址,并且只能是该地址(无描述性名称)。
- 无论端口如何,服务器可能需要使用 TLS 加密。
- 25端口比较常见,但是根据官方的RFC邮件提交应该使用587端口,试试吧。
- GoDaddy 可能只允许从他们自己的(托管)服务器连接到这些 SMTP 中继。
除非连接完全失败(这将指向第 4 条),否则服务器应该在某个时候发送某种错误消息。正如我在上面所写,我会推荐 testing/logging 交流,这应该会提供一些见解。
也许你应该打电话给你的 ISP,在荷兰,他们大多阻止端口 25,因为用于发送电子邮件的恶意软件和蠕虫。它可以这么简单。您是否尝试过从本地计算机远程登录到电子邮件服务器 (telnet mailserver.io 25)?如果这最终超时,您会得到答案,并且端口会在您的 ISP 处或从他们那端被过滤掉。
你可以试试这个代码
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();