org.springframework.mail.MailSender を使用してメール送信を提供しようとしています。
次のクラスで MailSender と MessageSource-beans を構成しました。
@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 の性質を理解できません。このクラス例外が見逃されているということですか。それとも他の種類の問題を意味しますか? ...