我正在连接到gmail帐户来验证我们的应用程序发送的确认电子邮件。在最初实现它时,为了成功连接到gmail,我们必须将"不太安全的应用程序访问"配置的帐户设置为ON。
看起来谷歌从2022年5月30日起关闭了该设置,所以现在身份验证失败了。
我现在如何连接到Gmail帐户来验证确认电子邮件?
. lang。RuntimeException: javax.mail.AuthenticationFailedException: [AUTHENTICATIONFAILED] Invalid credentials (Failure)
您可以尝试通过"应用程序密码"进行身份验证。
你的Google账号:
-
set "两步验证"在两步认证方式
-
创建16个字符的"应用程序密码"如何创建应用程序密码)->结果应该类似于:16个字符的"应用密码">
-
使用16个字符的密码代替Google帐户密码
MailMessage mail = new MailMessage(); foreach (string receiver in DolociPrejemnike()) mail.To.Add(receiver); mail.From = new MailAddress("app_gmail@gmail.com", "No replay"); //pošiljatelj (vedno enak) mail.Subject = SetSubject(); mail.Body = SetBody(); mail.IsBodyHtml = true; SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Port = 587; smtp.UseDefaultCredentials = true; smtp.Credentials = new System.Net.NetworkCredential("app_gmail@gmail.com", "xtqapucsmyvqmvxp"); // Enter seders User name and password smtp.EnableSsl = true; smtp.Send(mail);
我也为此奋斗了一段时间。当我开始使用应用程序密码时,它会失败,并出现与问题中提到的相同的异常。在尝试了几次之后,我用浏览器登录了我的邮箱,它要求我再次验证,并说"观察到一些奇怪的活动"。出乎意料的是,在这个浏览器登录后,同一段代码开始正常工作,验证成功。
你可以创建一个应用程序的密码,并使用它来代替你的标准的谷歌密码。
或
你需要在你的代码中启用xoauth2,或者如果你有一个工作空间帐户,使用一个服务帐户通过gmail api。
OAuth2支持Properties props = new Properties();
props.put("mail.imap.ssl.enable", "true"); // required for Gmail
props.put("mail.imap.auth.mechanisms", "XOAUTH2");
Session session = Session.getInstance(props);
Store store = session.getStore("imap");
store.connect("imap.gmail.com", username, oauth2_access_token);