我正在构建一个 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/