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

Access 2021程序发送邮件报错求助:SMTP传输失败

Access 2021中CDO发送带附件邮件报错排查方案

我在Access 2021开发的程序里,用CDO代码发送带错误日志附件的邮件时,突然出现错误:

-2147220975: The message could not be sent to SMTP server. The transport error code was 0x80040217. The server response was not available

账号登录outlook.com正常,之前代码能运行,现在带附件就出问题。以下是排查方向和解决步骤:

  • 恢复SMTP端口配置
    Office365的SMTP服务必须指定587端口(标准提交端口),你的代码注释掉了端口配置项,导致CDO可能使用默认25端口,而多数网络环境会封禁25端口,或Office365拒绝非标准端口连接。去掉注释,添加该配置:

    emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
    
  • 检查附件路径与权限
    确认C:\RDC-POS\Error Logs\ErrorLog.txt文件存在,且当前运行Access的用户有读取权限。若文件不存在或权限不足,CDO处理附件时可能触发底层错误,间接导致SMTP连接失败(错误信息可能不准确)。可先替换成系统路径文件测试,比如取消注释c:\windows\win.ini,验证是否能发送成功,排除路径问题。

  • 验证Office365认证方式
    若账号开启了MFA(多重身份验证),CDO的基本认证无法使用原密码登录,必须生成应用密码替换代码中的sendpassword值。登录outlook.com时若需要验证码,说明已开启MFA,需在微软账号设置中生成应用密码。

  • 检查网络端口连通性
    确认运行程序的电脑能访问smtp.office365.com的587端口,用命令行测试:

    telnet smtp.office365.com 587
    

    若连接失败,说明网络防火墙或路由器封禁了该端口,需联系网络管理员开放。

  • 补充CDO超时配置
    增加SMTP连接超时设置,避免因网络延迟导致连接失败:

    emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:29:54