如何用Dart通过Gmail发送邮件?排查535认证失败问题
解决Gmail SMTP认证失败(535错误)的方案
核心原因
谷歌目前默认禁止使用普通账号密码通过SMTP登录Gmail,必须使用应用专用密码(需先开启两步验证),或启用已逐步淘汰的「不太安全的应用访问」(不推荐)。
具体解决步骤
1. 开启谷歌账号两步验证
- 登录目标谷歌账号,进入安全设置界面
- 找到「两步验证」选项,按引导完成开启(需绑定手机号或其他验证方式)
2. 创建应用专用密码
- 开启两步验证后,返回安全设置页面,找到「应用专用密码」入口
- 选择「邮件」作为应用类型,设备可选择「其他」并自定义名称
- 生成的16位无空格密码,就是代码中需要使用的
password值
3. 调整代码配置
将原代码中的普通密码替换为刚生成的应用专用密码,同时确保username与from地址完全一致:
String username = "profept.recuperacao@gmail.com"; String password = "生成的16位应用专用密码"; final smtpServer = gmail(username, password); final message = Message() ..from = Address( 'profept.recuperacao@gmail.com', 'ProfEPT recuperação de senhas', ) ..recipients.add(destinatario) ..subject = "email subject" ..html = "email body"; try { final sendReport = await send(message, smtpServer); print('email send ${sendReport.mail}'); } catch (e) { print('Error: $e'); }
额外排查点
- 登录谷歌账号查看「最近的安全活动」,若SMTP登录请求被拦截,手动选择「允许」
- 若无法开启两步验证,可尝试开启「不太安全的应用访问」(仅部分旧账号或特定地区支持,谷歌已逐步禁用此功能)
内容的提问来源于stack exchange,提问作者ProfEPT Recuperação
相关产品推荐
相关产品推荐

