使用带有gmail的SMTP使用JAVA MAIL进行身份验证时出错

时间:2017-01-14 15:21:38

标签: java email smtp smtp-auth

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

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

我创建了一个包含以下属性的会话:

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

错误代码中的链接提到我可能需要允许安全性较低的应用:如果您不使用两步验证,则可能需要允许安全性较低的应用访问您的帐户。 &#39;它还声明这会使我的帐户不那么安全,我不想这样做。

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

此外,使用Gmail通过SMTP发送电子邮件也有限制。我想知道这种方法是否适合用于从JAVA应用程序发送通知电子邮件的方法?有没有办法成为受信任的电子邮件发件人,并增加您的限制?或者我在这里完全走错了路线

提前致谢...

1 个答案:

答案 0 :(得分:0)

此链接https://support.google.com/accounts/answer/185833可能会回答您的问题。请查看&#34;如何生成和应用密码&#34;部分。之后,您将选择一个&#34; app&#34;,比如gmail,drive等,然后生成&#34; app密码&#34;,为此,您将在那之后在您的Java应用程序中用于发送和接收Gmail。