0

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 の性質を理解できません。このクラス例外が見逃されているということですか。それとも他の種類の問題を意味しますか? ...

4

0 に答える 0