使用R语言mailR包向Outlook发送邮件失败问题求助
问题根因
报错核心是java.net.UnknownHostException: smtp.office365.com,说明程序无法解析Office365 SMTP服务器的域名,同时你的代码本身存在语法错误,需要先修正再排查网络和权限问题。
第一步:修正代码错误
你提供的代码存在两个明显语法问题:
- port参数前多写了一个多余的反引号
- authenticate参数重复定义了两次
修正后的代码如下:
library(mailR) send.mail( from = "me@companydomain.com", to = c("coworker@companydomain.com"), subject = "Test Email", body = "testing", smtp = list( host.name = "smtp.office365.com", port = 587, user.name = "me@companydomain.com", passwd = "你的密码", tls = TRUE ), authenticate = TRUE, send = TRUE )
第二步:排查DNS解析问题
在你的设备终端/命令提示符中执行命令ping smtp.office365.com,如果返回找不到主机的报错,说明你本地DNS配置异常,可尝试更换公共DNS后重试。
第三步:排查网络端口限制
很多企业内网会拦截对外的587端口访问,或是设置了全局代理:
- 如果是个人网络,可检查防火墙规则是否放行587端口的出站请求
- 如果是企业网络,联系IT确认是否开放smtp.office365.com的587端口访问权限,如有代理要求,需要在smtp配置中补充代理地址、端口、认证信息
第四步:调整Office365账号配置
目前Office365默认禁用基础密码认证的SMTP发送权限:
- 如果你没有开启账号二次验证(MFA),需要先在账号安全设置中启用SMTP认证
- 如果你开启了MFA,不能直接填账号登录密码,需要在账号安全中心生成专属的应用密码,替换代码中passwd参数的取值即可。
内容的提问来源于stack exchange,提问作者retrx22
相关产品推荐
相关产品推荐

