Я пытаюсь обеспечить отправку электронной почты с помощью org.springframework.mail.MailSender.
Я настроил компоненты MailSender и MessageSource в следующем классе:
@Configuration
public class MailProvider {
@Bean(name = "mailSender")
public MailSender javaMailService() {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost("smtp.gmail.com");
javaMailSender.setPort(587);
javaMailSender.setProtocol("smtp");
Properties mailProperties = new Properties();
mailProperties.put("mail.smtp.auth", Boolean.TRUE);
mailProperties.put("mail.transport.protocol", "smtp");
mailProperties.put("mail.smtp.starttls.enable", Boolean.TRUE);
mailProperties.put("mail.smtp.debug", Boolean.TRUE);
javaMailSender.setJavaMailProperties(mailProperties);
return javaMailSender;
}
@Bean
public MessageSource messageSource() {
final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setUseCodeAsDefaultMessage(true);
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(0);
return messageSource;
}
@Bean
public PostUserListener getListener() {
return new PostUserListener();
}
@Bean(name = "email")
public SimpleMailMessage getMessage() {
return new SimpleMailMessage();
}
}
И во время развертывания приложения (tomcat) я ловлю исключения:
java.lang.NoClassDefFoundError: javax/mail/MessagingException
at ru.spb.dreamwhite.config.MailProvider.javaMailService(MailProvider.java:23)
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
Класс, в котором я использую вышеуказанные bean-компоненты:
@Component
public class PostUserListener implements ApplicationListener<OnPostUserDataEvent> {
private static Logger logger = Logger.getLogger(PostUserListener.class.getName());
@Autowired
SimpleMailMessage email;
@Autowired
private MailSender mailSender;
@Override
public void onApplicationEvent(OnPostUserDataEvent onPostUserDataEvent) {
this.confirmPost(onPostUserDataEvent);
}
private void confirmPost(OnPostUserDataEvent onPostUserDataEvent) {
logger.info("new user " + onPostUserDataEvent.getUser().getName() + " is created");
User user = onPostUserDataEvent.getUser();
String recipient = user.getEmail();
String subject = "Registration Confirmation";
String url = onPostUserDataEvent.getAppUrl();
String message = "Thank you for registering. Please click on the below link to activate your account";
email.setTo(recipient);
email.setSubject(subject);
email.setText(message + "http://localhost:8080" + url);
mailSender.send(email);
}
}
И я не могу понять природу MessagingException. Означает ли это, что это исключение класса пропущено. Или это другие вопросы? ...