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

使用smtplib发送Outlook邮件时遭遇535认证失败错误,寻求解决方法

使用smtplib发送Outlook邮件时遭遇535认证失败错误,寻求解决方法

看起来你刚创建的Outlook测试账户踩了微软的SMTP安全限制坑,这个535 Authentication unsuccessful, basic authentication is disabled错误指向性很强——微软现在对新注册的账户默认禁用了基础密码认证,必须通过应用密码(前提是开启两步验证)才能完成SMTP登录。我来帮你一步步搞定:

一、先解决核心的认证问题(最关键)

  1. 开启账户的两步验证
    微软的应用密码功能是和两步验证绑定的,你得先登录Outlook网页版,进入「账户安全」设置,找到「两步验证」选项并开启,按照提示绑定验证方式(比如手机短信验证码)。

  2. 生成专属的应用密码
    开启两步验证后,回到安全设置页面,找到「应用密码」选项(可能藏在「高级安全选项」分类下),生成一个专门给这个Python脚本用的应用密码。注意这个密码只会显示一次,一定要复制保存好,绝对不能用你的普通登录密码或者随便填的字符串,脚本里的senha参数必须填这个生成的应用密码。

二、代码细节优化与检查

你的代码逻辑整体没问题,但有几个小细节可以优化,也能避免潜在问题:

  • 用with语句安全读取文件:替代直接open(),不用手动关闭文件句柄:
    # 替换原有的文件读取代码
    with open(f'.\\pdf\\{fileToSend}', 'rb') as contFile:
        cont = contFile.read()
    
  • 发送后正常关闭SMTP连接:在server.send_message(msg)之后加上server.quit(),确保连接正常断开:
    server.send_message(msg)
    server.quit()  # 新增这一行,避免连接残留
    
  • 确认发件人邮箱完全匹配:代码里的msg['From'] = email要和你传入的'email@outlook.com'完全一致,不能有拼写错误。

三、最后验证流程

把生成的正确应用密码替换到脚本的app_password位置,确认PDF文件路径(.\\pdf\\fileToSend.pdf)确实存在,再运行脚本应该就能正常发送邮件了。

如果还是报错,可以留意错误提示的变化:如果是文件找不到的错误,就检查PDF路径;如果还是认证错误,大概率是应用密码没生成对或者两步验证没配置到位。

备注:内容来源于stack exchange,提问作者Confetti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:54:29