java - JavaMailSenderImpl 上的消息异常
问题描述
我正在尝试使用 org.springframework.mail.MailSender 提供电子邮件发送。
我在以下类中配置了 MailSender 和 MessageSource-bean:
@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 的性质。这是否意味着错过了这个类异常。或者它意味着其他类型的问题?...
解决方案
推荐阅读
- html - 使用 R Kable 的可浏览页面
- git - 出现错误:无法连接到存储库,同时将 git 项目添加到詹金斯
- excel - 在第二个空格后删除
- fabricjs - Fabric Js Image blend过滤和更改Image src问题
- google-apps-script - 如何更改具有已知任务和任务列表 ID 的任务的参数
- django - 找不到启动新项目的命令
- swift - 如何在 App Delegate 中使控制器独立?
- python - Pygame 窗口关闭,但程序在退出时仍挂起(Mac)
- c++ - QT 上下文菜单未与光标对齐
- d3.js - 条形图未在 SVG 中显示