无法通过gmail API连接到gmail.我们如何打开不太安全的应用程序访问?



我正在连接到gmail帐户来验证我们的应用程序发送的确认电子邮件。在最初实现它时,为了成功连接到gmail,我们必须将"不太安全的应用程序访问"配置的帐户设置为ON。

看起来谷歌从2022年5月30日起关闭了该设置,所以现在身份验证失败了。

我现在如何连接到Gmail帐户来验证确认电子邮件?

. lang。RuntimeException: javax.mail.AuthenticationFailedException: [AUTHENTICATIONFAILED] Invalid credentials (Failure)

您可以尝试通过"应用程序密码"进行身份验证。

你的Google账号:

  1. set "两步验证"在两步认证方式

  2. 创建16个字符的"应用程序密码"如何创建应用程序密码)->结果应该类似于:16个字符的"应用密码">

  3. 使用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);

最新更新