javax.mail.AuthenticationException - Облачное приложение Google Engine - Spring Boot - PullRequest
0 голосов
/ 04 марта 2019

В настоящее время я работаю над приложением с весенней загрузкой, когда мне необходимо отправить почту в определенный момент, поэтому я использовал для этого javax.mail api, программа отлично работает на локальном компьютере.но при развертывании приложения в движке облачных приложений Google я получаю следующую ошибку:

javax.mail.AuthenticationFailedException

я пытался следовать инструкциям по документации облачного Googleкогда дело доходит до почтовых требований, но я продолжаю получать ту же ошибку.

, следуя моему коду. *

                public boolean sendMail(String indicator, String destination, String hotelName, String username, String password) {
            Properties props = new Properties();
            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "587");

            Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(env.getProperty(IConstants.mailAddress),
                            env.getProperty(IConstants.mailPass));
                }
            });

            String indic = null;
            if(indicator.equals("R")){
                indic = "RECEPTIONIST";
            }

            if(indicator.equals("M")){
                indic = "ROOMMAID";
            }

            try {

                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(env.getProperty(IConstants.mailAddress)));
                message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(destination));
                message.setSubject(indic + "Hotel " + hotelName + " - Credentials");
                message.setText("Hello " + hotelName
                        + " Employee, Down Below Your Credentials for a secure access to your workspace " + ".\n USERNAME: "
                        + username + " PASSWORD: " + password + ".\n" + "Greetings.");
                Transport.send(message);
                return true;
            } catch (MessagingException e) {
                throw new RuntimeException(e);
            }
        }

Почта отправителя находится в списке авторизованных отправителей почты, все настроено правильно,приложение отвечает на все запросы, но при отправке почты происходит сбой.

Я включил опцию аутентификации приложения с меньшей безопасностью в учетной записи отправителя gmail, но он продолжает отклонять попытки аутентификации.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Использовали ли вы стандартную или гибкую среду?В нашем случае мы использовали гибкий env с почтовой рассылкой Google SMTP.Это работает нормально для нас.И я подозреваю, что проблема в вашем случае связана с проверкой доступа третьей стороны к почтовому аккаунту Google.После включения этой опции попробуйте тот же SMTP, чтобы ваше приложение могло получить доступ к SMTP-адресу Gmail.

Включите доступ из настроек, показанных на скриншоте для учетной записи, которая используется из SMTP * 1004.*

enter image description here

Хотя sendgrid - это хороший почтовый сервис.Но мы предпочли гугл smtp только.

0 голосов
/ 05 марта 2019

Я продолжал пробовать несколько конфигураций, чтобы это работало, но это не помогло, поэтому я переключился на другую опцию, я реализовал решение sendGrid , Google Cloud перечислил его как возможныйальтернативный подход, он был таким простым, безопасным и работал с первой попытки.

Реализация SendGrid

Спасибо за ваши предложения

...