Не удается отправить электронную почту с помощью Java

Первый раз пытаюсь работать с SMTP в java. Но, возможно, он даже не может войти в систему, чтобы отправить тестовую почту.

public void sendMail() throws AddressException {
    final String username = "[email protected]";
    final String password = "*******";

    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("[email protected]"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("[email protected]"));
        message.setSubject("Subject");
        message.setText("Just Test Mail");

        Transport.send(message);

        System.out.println("SENT!");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }

}

Я не знаю, в чем проблема с этим кодом. Он компилируется нормально, но когда я пытаюсь отправить почту, он просто дает мне следующее отладочное сообщение:

        Caused by: java.lang.RuntimeException: javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbuR
    534-5.7.14 EY2k-9Ce8uWcOC3c1LSLdlFWcaIpFFpopYCeQy2niL0hD-knkk0Q58ObpnzTiGohEIx7Qz
    534-5.7.14 jXIdMVyr2CxEqnckmBMlA-IBxZnmSObE6uby8wATa6inRuZyaLWWE-gIsk5HiExKJzkNke
    534-5.7.14 LIoQEXxNYLfDrJQhYtNFJzHy1bl5ke5UqDUbReJyrEjLritFV1n5OalHDWD0Z32v75FzXS
    534-5.7.14 ttXQra4ExolIcZR7TSeU2_xGuS0g0> 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 e6sm10484931pad.0 - gsmtp

            at money.SendMailController.sendMail(SendMailController.java:48)
            at money.MainController.sendMail(MainController.java:477)
            ... 53 more
    Caused by: javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbuR
    534-5.7.14 EY2k-9Ce8uWcOC3c1LSLdlFWcaIpFFpopYCeQy2niL0hD-knkk0Q58ObpnzTiGohEIx7Qz
    534-5.7.14 jXIdMVyr2CxEqnckmBMlA-IBxZnmSObE6uby8wATa6inRuZyaLWWE-gIsk5HiExKJzkNke
    534-5.7.14 LIoQEXxNYLfDrJQhYtNFJzHy1bl5ke5UqDUbReJyrEjLritFV1n5OalHDWD0Z32v75FzXS
    534-5.7.14 ttXQra4ExolIcZR7TSeU2_xGuS0g0> 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 e6sm10484931pad.0 - gsmtp

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:932)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:843)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:748)
at javax.mail.Service.connect(Service.java:388)
at javax.mail.Service.connect(Service.java:246)
at javax.mail.Service.connect(Service.java:195)
at javax.mail.Transport.send0(Transport.java:254)
at javax.mail.Transport.send(Transport.java:124)
at money.SendMailController.sendMail(SendMailController.java:43)
... 54 more

Как на самом деле я отправляю почту через java?


person u4547878    schedule 27.10.2016    source источник
comment
Возможный дубликат Решение ошибки javax.mail.AuthenticationFailedException   -  person Sabir Khan    schedule 27.10.2016
comment
Вы установили свойство props.put("mail.transport.protocol", "smtps"); ? Установите свойство и дайте мне знать статус.   -  person Ataur Rahman Munna    schedule 27.10.2016
comment
И еще вопрос, вы заходили в свой аккаунт? попробуйте сначала из веб-браузера и проверьте, можете ли вы войти в систему.   -  person Ataur Rahman Munna    schedule 27.10.2016
comment
да. props.put(mail.transport.protocol, smtps); был добавлен . Пробовал из браузера и может войти. Но с использованием java это те же ошибки   -  person u4547878    schedule 27.10.2016
comment
Проблема заключалась в google.com/settings/security/lesssecureapps.   -  person u4547878    schedule 27.10.2016
comment
Можно ли теперь отправлять почту из программы?   -  person Ataur Rahman Munna    schedule 27.10.2016
comment
да. Но с включенными менее безопасными приложениями. Можно ли отправить, не касаясь менее безопасной конфигурации приложения?   -  person u4547878    schedule 27.10.2016
comment
Конечно вы можете. Я думаю, вам может понадобиться ssl-сертификат, чтобы сделать это. добавить свойства mailProperties.put("mail.smtp.starttls.enable", "true"); и установить системное свойство System.setProperty("javax.net.ssl.trustStore", "path to your jks file"); System.setProperty("javax.net.ssl.trustStorePassword", "your truststore password");   -  person Ataur Rahman Munna    schedule 27.10.2016
comment
Что такое файл JKS?   -  person u4547878    schedule 27.10.2016
comment
java keystore file. Чтобы узнать, как создать файл jks, Google может быть здесь хорошим другом.   -  person Ataur Rahman Munna    schedule 27.10.2016