MessagingException на JavaMailSenderImpl - PullRequest
       9

MessagingException на JavaMailSenderImpl

0 голосов
/ 26 февраля 2020

Я пытаюсь обеспечить отправку электронной почты с помощью 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. Означает ли это, что это исключение класса пропущено. Или это другие вопросы? ...

...