0

I'am trying to provide email-sending by using org.springframework.mail.MailSender.

I configurated MailSender and MessageSource-beans in the following class:

  @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();
}

  }

And during application-deployment (tomcat) I catch exceptions:

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)

The class, where I use above-stated beans:

@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);

   }
 }

And I cant understand the nature of MessagingException. Does it mean, that this class-exception is missed. Or it mean other kind of issues?...

Jelly
  • 972
  • 1
  • 17
  • 40

0 Answers0