java - 使用 JAVA MAIL 使用 SMTP 和 gmail 进行身份验证时出错

标签 java email smtp smtp-auth

我正在构建一个 JAVA 应用程序,需要执行一些自动发送电子邮件的操作。我希望在用户出价超出、中标或拍卖即将结束时自动向用户发送电子邮件。

我尝试过使用 JAVA MAIL 以编程方式通过 SMTP 从 gmail 电子邮件帐户向用户发送电子邮件。

我创建了一个具有以下属性的 session :

mailProps.put("mail.transport.protocol", "smtp");
mailProps.put("mail.host", "smtp.gmail.com");
mailProps.put("mail.from", "example@gmail.com");
mailProps.put("mail.smtp.starttls.enable", "true");
mailProps.put("mail.smtp.port", "587");
mailProps.put("mail.smtp.auth", "true");

但是,当它尝试连接 gmail smtp 服务器时,会出现以下错误:

2017-01-14T15:10:00.437+0000|Info: DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM
2017-01-14T15:10:00.437+0000|Info: DEBUG SMTP: AUTH LOGIN command trace suppressed
2017-01-14T15:10:00.688+0000|Info: DEBUG SMTP: AUTH LOGIN failed
534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbuw
534-5.7.14 EfaT2fDb2sjOrLupYNLlyOHb9lE38eDaz5aUiuBq92gl3
534-5.7.14 kZTEQkua_PZIUyxIdz49T58PTKSKOyzdqCX0gkcSFz6uz-lh
534-5.7.14 33n4s01a1H4jmxgJcm9tU-re9mmzW_YRno-F6DkwnVJKJVSVwYnMzxmwBE
534-5.7.14 EQrJwrflGIGvyv_ShBDkHLFwGrzf0> Please log in via your web browser and
534-5.7.14 then try again.
534-5.7.14  Learn more at
534 5.7.14  https://support.google.com/mail/answer/78754 c202sm13382879wmd.10 - gsmtp

错误代码中的链接提到我可能需要“允许安全性较低的应用程序:如果您不使用两步验证,则可能需要允许安全性较低的应用程序访问您的帐户。”它还指出这会降低我的帐户的安全性,我不想这样做。

我是否必须使用两步身份验证,如果可以,有人可以向我指出描述该身份验证的资源吗?

此外,使用 gmail 通过 SMTP 发送电子邮件也存在限制。我想知道这种方法是否是用于从 JAVA 应用程序发送通知电子邮件的正确方法类型?有没有办法成为值得信赖的电子邮件发件人,并增加您的限制?或者我完全走错了路

提前致谢...

最佳答案

此链接https://support.google.com/accounts/answer/185833可能会回答你的问题。请参阅“如何生成应用程序密码”部分。之后,您将选择一个“应用程序”,例如 gmail、驱动器等,然后为其生成“应用程序密码”,然后您将在 Java 应用程序中使用它来发送和接收 gmail。

关于java - 使用 JAVA MAIL 使用 SMTP 和 gmail 进行身份验证时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41651572/

相关文章:

php - 使用 php 使用套接字发送电子邮件

java - Akka 中的集群

java - Java 9 运行代码如何使用使用非导出包的 Java 8 编译

java - 使用 Java Mail API 无法正确读取中文字母

c# - 如何在 Azure 中通过 SMTP 处理入站电子邮件

php - 在 IP 错误的共享主机上发送邮件的替代方法

c# - Hmail 服务器 C# SMTP

java - launchpad 提示缺少 maven-site-plugin 但我根本不使用它

java - 什么是 isInEditMode() 和 if(isInEditMode()) 返回;

javascript - 我可以在 sendgrid 上使用 Javascript 吗?