基于Socket实现Gmail发送邮件时遇535认证失败问题求助
Gmail SMTP Socket编程认证失败(535错误)解决方法
问题重现
通过Socket手动实现SMTP协议发送Gmail邮件,已关闭两步验证,但执行代码时返回535-5.7.8 Username and Password not accepted认证失败错误。
核心原因
当前Gmail已不再支持未启用两步验证的账号使用普通密码进行第三方SMTP登录,即使关闭两步验证,普通密码也无法通过SMTP认证。必须使用应用专用密码,而生成该密码的前提是开启账号的两步验证。
解决步骤
- 重新启用账号的两步验证
登录Google账号安全中心,找到“两步验证”选项并开启,按照指引完成验证设置。 - 生成应用专用密码
开启两步验证后,在安全中心找到“应用专用密码”选项,选择“邮件”作为应用类型,生成一个16位的专用密码。 - 替换代码中的凭据
将代码里的email_address改为完整的Gmail邮箱地址(如xxx@gmail.com),password替换为刚生成的应用专用密码:email_address = "your-full-gmail-address@gmail.com" password = "your-16-digit-app-specific-password" - 优化EHLO命令(可选)
将代码中的EHLO Alice改为EHLO localhost,避免服务器对自定义标识的识别问题:ehloCommand = 'EHLO localhost\r\n'
验证修改
重新运行代码,此时SMTP认证环节应返回235成功响应,后续可正常完成邮件发送流程。
内容的提问来源于stack exchange,提问作者Davut Boztaş
相关产品推荐
相关产品推荐

