关于这个主题有很多讨论,但是看起来谷歌执行了它的安全策略,现在,如果它仍然可能的话,很难找到一种使用谷歌通过SMTP协议发送邮件的方法
我的java应用程序工作正常,这不是代码的事实,我用它来发送邮件outlook 365或hotmail
这里的要点是如何配置要传递给会话的属性
Session session = Session.getInstance(prop,auth)
以及如何配置Google帐户以接受SMPT呼叫
准确地说,我使用的是谷歌工作区帐户,而不是标准的@gmail帐户
关于属性不应该是一个很大的疑问,这是列在谷歌的几个页面:
关于谷歌帐户,看起来有3个策略:https://support.google.com/a/answer/176600?hl=en
选项1:使用SMTP中继发送电子邮件:配置路由后,从我的域这是收到的日志
mail.smtp.starttls.enable=true
mail.smtp.port=587
mail.smtp.auth=true
mail.smtp.host=smtp-relay.gmail.com
mail.smtp.ssl.protocols=TLSv1.2
mail.smtp.ssl.trust=smtp-relay.gmail.com --> in this way a consider valid their certificate
but go head...
DEBUG SMTP: protocolConnect login, host=smtp-relay.gmail.com, user=myuser@my.domain, password=<non-null>
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2
DEBUG SMTP: Using mechanism LOGIN
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN failed
Caused by: javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials
选项2:发送电子邮件与Gmail SMTP服务器测试,但这是不可能的,谷歌删除了在2022年创建应用程序密码
选项3:使用受限的Gmail SMTP服务器发送电子邮件不是有效的方法,您只能在您的组织中发送邮件
如果同样一个人成功了听起来会很高兴
1条答案
按热度按时间ars1skjm1#
应用程序密码可以用来登录谷歌smtp服务器你需要有2fa启用您的谷歌帐户,以创建一个应用程序密码。
只需创建一个应用程序密码,并在代码中使用它来代替标准的gmail密码。
另一个选择是使用XOauth2并授权用户访问他们的gmail帐户。如果你不能在帐户上启用2fa,这可以使用。