You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过GoDaddy SMTP发送邮件的ASP.NET MVC技术求助

解决ASP.NET MVC在IIS上使用GoDaddy SMTP发送邮件失败的问题

我得先点明核心问题:GoDaddy的SMTP中继服务对非GoDaddy托管的外部服务器(比如你自己搭建的IIS)有特殊限制,这就是你之前在GoDaddy虚拟主机上能用、换了IIS就失效的关键原因。结合你的代码和常见踩坑点,我整理了针对性的解决方案:

1. 先修正代码里的低级错误

你的代码里有两个容易被忽略的问题:

  • NetworkCredentials 拼写错误,C#里正确的类名是 NetworkCredential(单数形式)
  • EnableSsl = False 在C#里规范写法是小写的 false(虽然编译器可能兼容,但严格来说是语法细节问题)

2. 调整GoDaddy SMTP配置参数

针对外部IIS环境,GoDaddy有专门的SMTP配置方案,别再用relay-hosting或dedrelay了,试试这套:

  • SMTP服务器:smtpout.secureserver.net(这是GoDaddy面向外部服务器的标准SMTP入口)
  • 端口:优先用 587(TLS加密),不行就换 465(SSL加密)——绝对别用25端口,绝大多数ISP会封禁25端口防垃圾邮件
  • SSL/TLS:必须启用(EnableSsl = true)
  • 发件人限制:GoDaddy要求发件人地址必须和你用于认证的邮箱完全一致,不能随便用model.From,得固定成support@{myCompanyName}.com

修正后的完整代码示例:

MailMessage msg = new MailMessage();
// 注意:发件人必须与认证邮箱完全匹配
msg.From = new MailAddress("support@{myCompanyName}.com");
msg.To.Add(model.To);
msg.Body = model.Body;
msg.Subject = model.Subject;

using (SmtpClient smtp = new SmtpClient("smtpout.secureserver.net", 587))
{
    smtp.Credentials = new NetworkCredential("support@{myCompanyName}.com", "{password}");
    smtp.EnableSsl = true;
    // 增加超时设置,避免因网络延迟导致失败
    smtp.Timeout = 10000;
    smtp.Send(msg);
}

3. 其他必须检查的关键点

  • 邮箱权限验证:确保support@{myCompanyName}.com是在GoDaddy正常创建的邮箱,密码没有过期或输入错误
  • 防火墙/出站规则:检查IIS服务器的防火墙设置,允许出站访问587或465端口
  • 错误日志排查:如果还是失败,一定要加异常捕获记录详细错误,比如:
    try
    {
        smtp.Send(msg);
    }
    catch (Exception ex)
    {
        // 把ex.Message和ex.InnerException写入日志
        // 这能帮你精准定位问题,比如认证失败、端口被封、邮件被拦截等
    }
    
  • 避免垃圾邮件标记:测试邮件内容别包含敏感关键词,收件人地址要真实,别批量发送测试邮件触发GoDaddy的反垃圾机制

内容的提问来源于stack exchange,提问作者Saqib A. Azhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:58:47