【发布时间】:2017-05-29 19:50:25
【问题描述】:
我正在构建一个需要自动发送电子邮件的 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
错误代码中的链接提到我可能需要“允许安全性较低的应用:如果您不使用两步验证,您可能需要允许安全性较低的应用访问您的帐户。”它还指出,这会降低我的帐户安全性,我不想这样做。
我是否必须使用两步身份验证,如果需要,有人可以将我指向描述它的资源吗?
此外,使用 gmail 通过 SMTP 发送电子邮件也存在限制。我想知道这种方法是否是用于从 JAVA 应用程序发送通知电子邮件的正确方法类型?有没有办法成为受信任的电子邮件发件人,并增加您的限制?还是我完全走错了路
提前谢谢...
【问题讨论】: