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

SQL Server 2012 Database Mail提示邮件服务器故障无法发信问题咨询

SQL Server 2012 Database Mail 发信失败排查方案

账户1(587端口SSL,证书校验失败)排查

  • 注意SQL Server的Database Mail运行在SQL Server服务账号的上下文下,不是当前登录用户的证书存储,如果之前是在当前用户证书存储安装的证书,SQL Server服务无法读取:
    • 按下Win+R输入mmc打开控制台,依次点击文件→添加/删除管理单元→选择「证书」→添加→选择「计算机账户」→下一步→本地计算机→完成,确认保存
    • 将邮件服务器的根证书、中级证书全部导入到「本地计算机→受信任的根证书颁发机构→证书」目录下
    • 导入完成后重启SQL Server服务,让服务读取新的证书存储
  • 确认证书的通用名称(CN)或者使用者备用名称(SAN)里包含你Database Mail配置中填写的SMTP服务器地址,不要直接填IP,要填证书绑定的域名,否则会触发域名不匹配的校验错误
  • 测试环境如果使用自签名证书不需要严格校验(生产环境不推荐),可以在Database Mail配置中关闭SMTP的SSL证书校验

账户2(465端口SSL,超时)排查

  • 先检查服务器出站规则是否开放465端口的TCP出站权限:
    • 用管理员权限打开cmd,执行telnet <SMTP服务器地址> 465,如果连不上说明是防火墙/安全组限制,先协调运维放开对应出站端口
    • 如果telnet可以连通,检查SQL Server服务账号是否有出站访问465端口的权限,部分企业的组策略会限制服务账号的网络访问权限
  • 确认SMTP服务器的465端口是否支持隐式SSL,SQL Server 2012版本的Database Mail对隐式SSL的支持存在兼容性问题,部分云厂商/自建SMTP的465隐式SSL会识别失败,可以更换为587端口的显式SSL测试

账户3(25端口无SSL,10060连接错误)排查

  • 10060是标准的网络不可达错误,先确认25端口的出站是否被封禁:
    • 目前国内云厂商默认都会封禁25端口的出站防止垃圾邮件,需要到云平台的安全配置页面申请解封25端口
    • 本地服务器需要检查Windows防火墙、企业出口防火墙是否开放25端口的TCP出站权限,同样先用telnet <SMTP服务器地址> 25测试连通性
  • 确认SMTP服务器是否允许25端口无SSL连接,现在大部分公共邮件服务商(腾讯、网易、Gmail等)都已经关闭了25端口的非加密连接,即使连通也会拒绝发信

通用验证步骤

所有配置修改完成后,执行以下SQL语句测试发信:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = '你配置的邮件配置文件名',
    @recipients = '测试收件邮箱地址',
    @body = 'Database Mail测试邮件',
    @subject = 'SQL Server测试邮件';

如果仍然报错,可以查询Database Mail的日志获取更详细的错误信息:

SELECT * FROM msdb.dbo.sysmail_event_log ORDER BY log_date DESC;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:54:01