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

部署到GoDaddy后ASP.NET MVC应用SMTP邮件发送失败问题排查

ASP.NET MVC邮件发送在GoDaddy部署后无响应问题的解决办法

针对你遇到的本地正常、GoDaddy部署后无法发送邮件且无报错的问题,结合GoDaddy的SMTP规则,给出以下具体解决步骤:

1. 修正SMTP凭据设置

GoDaddy的relay-hosting.secureserver.net是内部中继服务器,不需要提供外部邮箱(如Gmail)的账号密码验证。你当前代码中添加的NetworkCredential会导致中继服务器静默拒绝请求,这也是无报错输出的原因之一。

修改代码:

  • 删除NetworkCredential _network = new NetworkCredential(...)及_smtp.Credentials = _network两行代码
  • 将_smtp.UseDefaultCredentials = false改为_smtp.UseDefaultCredentials = true

2. 更换发件人邮箱

GoDaddy的中继服务器要求发件人邮箱必须属于GoDaddy托管的域名,禁止使用Gmail、Outlook等外部邮箱作为发件地址,这是邮件被静默拦截的核心原因。

修改web.config中的FromEmail为你在GoDaddy托管的域名邮箱,例如:

<add key="FromEmail" value="admin@your-godaddy-domain.com"/>

3. 调整SMTP端口(可选)

虽然端口25是GoDaddy允许的默认端口,但部分服务器环境可能会拦截25端口。可以尝试更换为GoDaddy支持的替代端口:80或3535,修改web.config中的Port值即可。

4. 完善异常日志记录

当前代码仅用Console.WriteLine(ex)输出异常,在服务器环境下无法查看这些日志,导致你误以为没有报错。建议将异常信息写入服务器日志文件,以便排查问题:

修改catch块代码:

catch (Exception ex)
{
    // 确保logs目录存在且应用有写入权限
    string logPath = System.Web.HttpContext.Current.Server.MapPath("~/logs/mail-errors.log");
    System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(logPath));
    System.IO.File.AppendAllText(logPath, $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] {ex.ToString()}\n\n");
    return false;
}

修改后的完整代码示例

web.config配置:

<add key="Port" value="80"/>
<add key="Host" value="relay-hosting.secureserver.net"/>
<add key="FromEmail" value="admin@your-godaddy-domain.com"/>
<add key="ToEmail" value="reciveremail@gmail.com"/>
<add key="IsSSL" value="false" />

控制器方法代码:

MailMessage _mailmsg = new MailMessage();
_mailmsg.IsBodyHtml = true;
_mailmsg.From = new MailAddress(emailSender);
_mailmsg.To.Add(new MailAddress(ToEmail));
_mailmsg.Subject = "Test Mail";
_mailmsg.Body = "Body";

SmtpClient _smtp = new SmtpClient();
_smtp.Host = emailSenderHost;
_smtp.EnableSsl = emailIsSSL;
_smtp.Port = emailSenderPort;
_smtp.UseDefaultCredentials = true;
_smtp.DeliveryMethod = SmtpDeliveryMethod.Network;

try
{
    _smtp.Send(_mailmsg);
}
catch (Exception ex)
{
    string logPath = System.Web.HttpContext.Current.Server.MapPath("~/logs/mail-errors.log");
    System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(logPath));
    System.IO.File.AppendAllText(logPath, $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] {ex.ToString()}\n\n");
    return false;
}
return true;

内容的提问来源于stack exchange,提问作者prog1011

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:40:33