当“允许不太安全的应用程序:关闭”时,如何将Java中的邮件发送到Gmail

时间:2016-02-22 09:32:47

标签: java email oauth gmail javamail

我可以用java发送邮件到gmail,当“Allow less secure apps: ON”时(你可以找到代码here)。但是在“允许安全性较低的应用程序:关闭”时出现错误。请给我正确的步骤来解决这个问题。

错误:

534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbtDY
534-5.7.14 01tH8y-udRciS_SO5d08uqHUrrFPAbG1_XdRaoO-x_gAICwxl_UIsENPSoTXVrNqFs5BcR
534-5.7.14 KXMaVoEIwR9uACjnduELTwJg0SxLrXL5CltztHepubHzUzgC6h-iszlhKrUuckV1-k6FWS
534-5.7.14 jpMrpomFM2k_UcOdDm7SyTde8MadhGyxmYDZ5KZAHcqkRGKjR6hU7oY8hUaTFocikPxquP
534-5.7.14 B2iqPFDd4NLZqv6qGfDNK0q_i17s> 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 ud10sm34016765pab.27 - gsmtp 

我如何得到令牌:

第1步:我在google开发者控制台中创建了服务帐户。

第2步:接下来,通过使用此服务帐户,我获得了令牌。您可以在下面找到代码。

第3步:如何使用此令牌发送邮件到Gmail?请指导我。请告诉我我是新手。指导我,如果我错了

String emailAddress = "XXXX@XXXX.XX.gserviceaccount.com";

JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
HttpTransport httpTransport;
try {
    httpTransport = GoogleNetHttpTransport.newTrustedTransport();

    GoogleCredential credential = new GoogleCredential.Builder()
    .setTransport(httpTransport)
    .setJsonFactory(JSON_FACTORY)
    .setServiceAccountId(emailAddress)
    .setServiceAccountPrivateKeyFromP12File(new File("XXXX.p12"))
    .setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
    .build();
    System.out.println("success......");
    credential.refreshToken();

    token = credential.getAccessToken(); 

2 个答案:

答案 0 :(得分:0)

升级到使用最新安全措施的更安全的应用。

如何:

非常简单,你只需要完成所有步骤,一切都很好解释。

答案 1 :(得分:0)

如果您没有启用2步验证,则以下tutorial将允许您使用javax.mail通过GMail发送邮件,几乎没有大惊小怪。它在传输过程中使用SSL,但在限制较少的端口(587而不是465)上,你必须记住确保添加(&#34; mail.smtp.starttls.enable&#34;,&#34; true&#34;)属性或您不会使用SSL。值得记住的是,这种方法会尝试使用ssl,但如果服务器没有ssl功能,它将以纯文本形式传输。