Я прочитал все остальные вопросы о стековом потоке в соответствии с моей проблемой, но ни один из них не помог. Когда я хочу отправить электронное письмо , я получаю следующую ошибку :
ОШИБКА 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
Что я уже сделал:
- Включены менее безопасные приложения в моей учетной записи Google (https://www.google.com/settings/security/lesssecureapps)
- Доступ к учетной записи включен 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";
}
}