使用 IMAP 登录 Gmail 时出现 java.lang.reflect.InitationTargetException

标签 java email session imap gmail-imap

在这里,我尝试使用 IMAP(gmail API) 登录 Gmail,但是在传递用户名和密码时,我收到 Inlogging TargetException。 这是我的代码

`Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "<username>@gmail.com", "<password>");
//Here im getting exception and below is the log
Exception in thread "main" javax.mail.AuthenticationFailedException: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:474)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
} 

请帮我解决这个问题。谢谢。

最佳答案

您收到了来自 gmail 的警报,其可读测试表明了特定的网址。这并不是真正的建议或请求,尽管有“请”这个词,但这只是一个要求。

如果您想登录,您必须先进行Web登录,并且您必须使用支持javascript并能够解析验证码的浏览器。

通常有办法避免这种情况。在客户端代码中打开 OAUTH2 或更改 Gmail 帐户中的安全设置。两者通常都有效,但不能保证。 Google 使用启发式方法和各种魔法来猜测您是真正的用户还是攻击者,如果评估引擎对特定登录信息过于不确定,Google 希望使用双因素身份验证或验证码。

关于使用 IMAP 登录 Gmail 时出现 java.lang.reflect.InitationTargetException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41183577/

相关文章:

java - Android 监听器是某种设计模式吗?

Java - 接口(interface)实现中的方法名称冲突

email - 本地 SMTP 服务器

facebook - 如何获取 Facebook 好友列表电子邮件地址?

php - 如何将数据库的内容与输入内容进行比较?

java - 为什么从 Java 12 开始 JVM 启动速度更快

JavaFx,多线程应用程序,奇怪的异常

android - 获取崩溃日志并将其作为电子邮件发送

php - 需要有关构建无状态 Web 应用程序的信息

php - session 变量未设置,但仅在 Internet Explorer 中设置,并非在所有计算机上设置