Я пытался отправить письмо из Java-приложения.Я не использовал никакой аутентификации, так как я уже сохранял адрес от в базе данных после аутентификации.Это запланированное письмо, поэтому я не могу получить пароль при отправке письма.Поэтому я сохранил идентификаторы электронной почты в таблице сначала после аутентификации, а затем запланировал электронную почту.Пожалуйста, проверьте следующий код
public void sendMessage(EmailMessage emailMessage) {
Properties props = mailConfiguration.getProps();
Session session = Session.getInstance(props);
MimeMessage mimeMessage = new MimeMessage(session);
try {
mimeMessage.setFrom(new InternetAddress(emailMessage.getFromAddress()));
mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(emailMessage.getToAddress()));
mimeMessage.setSubject(emailMessage.getSubject());
mimeMessage.setContent(emailMessage.getMessage(), "text/html");
mimeMessage.setSentDate(new Date());
Transport.send(mimeMessage);
LocalDateTime localDateTime = LocalDateTime.now();
Timestamp sendTime = Timestamp.valueOf(localDateTime);
emailMessage.setGeneratedTime(sendTime);
emailMessage.setStatus(MessageStatus.SENT);
} catch (AuthenticationFailedException e) {
log.error("Username and Password not accepted." + e.getMessage(), e);
emailMessage.setStatus(MessageStatus.ERROR);
} catch (MessagingException e) {
log.error("An exception occurred while sending mail from [" + emailMessage.getFromAddress() + "] to [" + emailMessage.getToAddress() + "] : " + e.getMessage(), e);
emailMessage.setStatus(MessageStatus.ERROR);
}
log.info("Changing message status of Email Message " + emailMessage.getId() + " to " + emailMessage.getStatus());
emailMessageRepository.save(emailMessage);
}
Конфигурация электронной почты выглядит как
@Configuration
public class MailConfiguration {
Properties props = new Properties();
public MailConfiguration() {
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.starttls.required", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.debug", "false");
}
public Properties getProps() {
return props;
}
}
Проблема в том, что я не могу отправить электронное письмо, используя это.Вместо этого я получаю исключение типа
javax.mail.AuthenticationFailedException: null
В чем проблема?Я искал почти похожие вопросы здесь.Но они не объясняют мой сценарий