Проблема с SMTP, ошибка аутентификации при отправке электронной почты с использованием Spring Boot - PullRequest
1 голос
/ 19 марта 2020

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

ОШИБКА 14128 --- [nio-8080-exe c -6] com.xyz. service.EmailService: электронное письмо не было отправлено: example@gmail.com Ошибка аутентификации; Вложенное исключение - javax.mail.AuthenticationFailedException: 534-5.7.14 534-5.7.14 Пожалуйста, войдите в систему через веб-браузер и повторите попытку. 534-5.7.14 Подробнее на 534 5.7.14 https://support.google.com/mail/answer/78754 c5sm8093860wma.3 - gsmtp

Что я уже сделал:

  1. Включены менее безопасные приложения в моей учетной записи Google (https://www.google.com/settings/security/lesssecureapps)
  2. Доступ к учетной записи включен https://accounts.google.com/b/0/DisplayUnlockCaptcha и нажмите Продолжить.

Я проверил документацию, и я почти уверен, что все сделал хорошо. Итак, что мне не хватает?

application.properties

#EMAIL
spring.mail.host= smtp.gmail.com
spring.mail.port= 587
spring.mail.username= myEmailAddress@gmail.com
spring.mail.password= myPassword

# TLS , port 587
spring.mail.properties.mail.smtp.starttls.enable= true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000

#SSL, post 465
#spring.mail.properties.mail.smtp.socketFactory.port = 465
#spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory

EmailService. java

@Service
public class EmailService {

    private final Logger log = LoggerFactory.getLogger(this.getClass());
    private JavaMailSender javaMailSender;

    @Value("${spring.mail.username}")
    private String MESSAGE_FROM;

    @Autowired
    public void setJavaMailSender(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;
    }
    public void sendMessage(String email) {
        SimpleMailMessage message = null;

        try {
            message = new SimpleMailMessage();
            message.setFrom(MESSAGE_FROM);
            message.setTo(email);
            message.setSubject("Registration successful");
            message.setText("Dear " + email + ", thanks for register on my website.");
            javaMailSender.send(message);
        } catch (Exception ex) {
            log.error("Email was not sent for: " + email + " " + ex.getMessage());

        }

    }
}

ApiController. java

@Controller
public class ApiController {
    private final Logger log = LoggerFactory.getLogger(this.getClass());
    private EmailService emailService;

    @Autowired
    public void setJavaMailSender(EmailService emailService) {
        this.emailService = emailService;
    }

    @RequestMapping("/")
    public String home() {
        return "index";
    }
    @RequestMapping("/registration")
    public String registration(Model model) {
        model.addAttribute("user", new User());
        return "registration";
    }
    @PostMapping("/reg")
    public String greetingSubmit(@ModelAttribute User user) {
        System.out.println("NEW USER");
        emailService.sendMessage(user.getEmail());
        log.info("New User");
        return "auth/login";
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...