smtplib报SMTPAuthenticationError(535),但凭据可正常登录网页端,求原因
邮件SMTP认证失败问题排查
用户提供的测试代码
#!/usr/bin/env python3 import smtplib, ssl from email.message import EmailMessage msg = EmailMessage() msg.set_content("Email body") msg["Subject"] = "Email subject" msg["To"] = "test@dispostable.com" msg["From"] = "********@mail.com" server="smtp.mail.com" port=587 pwd="********" context=ssl.create_default_context() with smtplib.SMTP(server, port=port) as smtp: smtp.starttls(context=context) smtp.login(msg["From"], pwd) smtp.send_message(msg)
执行后错误信息
Traceback (most recent call last): File "./test.py", line 17, in <module> smtp.login(msg["From"], pwd) File "/usr/lib64/python3.6/smtplib.py", line 730, in login raise last_exception File "/usr/lib64/python3.6/smtplib.py", line 721, in login initial_response_ok=initial_response_ok) File "/usr/lib64/python3.6/smtplib.py", line 642, in auth raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'Authentication credentials invalid')
用户问题
本人确认邮件凭据可正常登录www.mail.com网页端,但通过SMTP方式调用时却出现认证失败,请问原因是什么?
可能的原因及排查方向
- 未开启SMTP服务权限:多数邮箱默认关闭SMTP服务,即便网页端能正常登录,也要进入邮箱设置页面,找到SMTP相关选项手动开启。
- 两步验证需用应用专用密码:如果邮箱开启了两步验证,直接用网页登录密码做SMTP认证会失败,需在邮箱设置里生成一个应用专用密码,替换代码中的
pwd。 - 密码存在输入误差:仔细核对代码里的密码是否和网页登录密码完全一致,注意特殊字符、大小写、空格等细节,避免复制粘贴时出错。
- 安全策略拦截:邮箱服务商可能识别到非常用设备/IP的SMTP请求,触发了拦截。登录网页端邮箱,查看是否有异常登录提醒并解除限制。
- 服务器地址匹配问题:虽然
smtp.mail.com是通用地址,但部分地区的mail.com账号可能对应不同的SMTP服务器,建议确认官方给出的正确服务器地址。
内容的提问来源于stack exchange,提问作者user19273
相关产品推荐
相关产品推荐

