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

如何使用Groovy/Java通过Office 365直送SMTP地址发送邮件并解决连接报错

Office 365 SMTP直送连接失败排查解决方案

核心根因及排查步骤

1. 出站25端口封禁(最高概率)

绝大多数云服务商(阿里云、腾讯云、AWS、Azure等)默认封禁服务器公网出站的25端口,企业内网防火墙也普遍有相同的限制策略,用于防控垃圾邮件发送。

  • 排查方法:在代码运行的设备上执行命令测试端口连通性
    telnet domain-com.mail.protection.outlook.com 25
    若返回连接超时、连接被拒绝提示,即可确认25端口被封禁。
  • 解决方法:
    • 向云服务商/企业IT运维申请开放当前设备的25端口出站权限
    • 若发信目标为Office 365内部账号,可改用SMTP客户端提交端口:地址改为smtp.office365.com,端口使用587(开启STARTTLS)或465(开启SSL),配合有效的Office 365账号认证即可。

2. DNS解析异常

本地DNS配置错误或DNS污染会导致域名无法解析到正确的微软EOP服务器地址。

  • 排查方法:执行域名解析校验命令
    nslookup domain-com.mail.protection.outlook.com
    对比返回的IP是否属于微软公开的Exchange Online Protection地址段,若不匹配则为解析异常。
  • 解决方法:更换公共DNS服务(如114.114.114.114、8.8.8.8)后重试。

3. EOP服务准入限制

domain-com.mail.protection.outlook.com是Office 365租户的入站MX地址,仅负责接收发往@domain.com后缀的内部邮件,本身有严格的准入规则:

  • 发信请求的公网IP必须提前添加到Office 365租户的允许发件IP列表,未被EOP拦截黑名单收录
  • 发件人域名的SPF记录必须包含当前发信的公网IP,否则EOP会直接拒绝连接或后续拒收邮件
  • 若需向租户外的邮箱发信,不可使用该MX地址,必须使用smtp.office365.com配合账号认证发送。

4. 代码配置优化

现有代码存在可调整的问题点:

  1. Session、Properties的初始化逻辑无需放在循环内,移到循环外可减少不必要的性能开销
  2. 显式配置超时参数,避免无限制等待:
properties.put("mail.smtp.connectiontimeout", "5000");
properties.put("mail.smtp.timeout", "10000");
  1. 确认_defaultProperties中没有配置错误的代理、HOST或认证参数,避免覆盖当前设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:06:05