送信メールSpringMail+thymeleaf+構成Beanで実現
13749 ワード
QQメールボックスを例に挙げます.1.smtpメールサービスがオンであることを確認し、パスワード2を取得する.JavaBeanのメール送信機3を構成する.テスト
1.Stmpメールサービスがオンであることを確認し、パスワード1を取得する.アカウントPOP 3/IMAP/STMTP/Exchange/CArdDAV/CAldDAVサービスsmtp 2.JavaBeanのメール送信機の設定
1) JavaMailConfig
2) exception.properties #email mail.host = smtp.qq.com mail.smtp = smtp mail.prot = smtp mail.username = [email protected] mail.password = xxxxxxxxx mail.defaultencodeing=UTF-8 3)htmlテンプレートパス:...srcmainresourcesmail
4)実現
3.テスト
————————————過程の難点1.beanの組み立てがよく分からず、メール送信機が長い間出てこなかったので、@beanがJavaMailSenderを組み立てることに気づきました.@AutowiredはJavaMailSenderを使っていました.以前@beanが組み立てるのはずっとMailSender 2でした.mailフォルダのパス、工事が取得したパスは私が想像していたのとは違って、私はずっとテンプレートに着いて、長い間調整しました.ssl注意4.Environmentは勝手にやってみればOKですが、検討が必要です———————————————この例は「Spring実戦(第4版)」を利用して作成されたもので、対応するコードが入っていて、疑問があればこの本を読むことができます.
1.Stmpメールサービスがオンであることを確認し、パスワード1を取得する.アカウントPOP 3/IMAP/STMTP/Exchange/CArdDAV/CAldDAVサービスsmtp 2.JavaBeanのメール送信機の設定
1) JavaMailConfig
package lb.springboot.config;
import java.util.Properties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.web.servlet.ViewResolver;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import org.thymeleaf.templateresolver.TemplateResolver;
@Configuration
@PropertySource("classpath:/exception.properties")
public class JavaMailConfig {
private static final int PORT = 465;// 587/465
@Autowired
private Environment env;// classpath exception.properties
//
@Bean
public JavaMailSender mailSender() {
System.err.println("@@@@@@@@@JavaMailSender");
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(env.getProperty("mail.host"));
mailSender.setProtocol(env.getProperty("mail.smtp"));
mailSender.setUsername(env.getProperty("mail.username"));
mailSender.setPassword(env.getProperty("mail.password"));
mailSender.setPort(PORT);
mailSender.setDefaultEncoding(env.getProperty("mail.defaultencodeing"));
Properties prop = new Properties();
// properties
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.timeout", "25000");
//
// prop.put("mail.debug", "true");
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
mailSender.setJavaMailProperties(prop);
return mailSender;
}
//
@Bean
public ViewResolver viewResolver(SpringTemplateEngine springTemplateEngine)
{
System.err.println("@@@@@@@@@ViewResolver");
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(springTemplateEngine);
return viewResolver;
}
//
@Bean
public ClassLoaderTemplateResolver emailTemplateResolver()
{
System.err.println("@@@@@@@@@ClassLoaderTemplateResolver");
ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
resolver.setPrefix("mail/");
resolver.setTemplateMode("HTML5");
resolver.setOrder(1);
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
// TemplateEngine
@Bean
public TemplateEngine templateEngine(TemplateResolver templateResolver)
{
System.err.println("@@@@@@@@@TemplateEngine");
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
return templateEngine;
}
}
2) exception.properties #email mail.host = smtp.qq.com mail.smtp = smtp mail.prot = smtp mail.username = [email protected] mail.password = xxxxxxxxx mail.defaultencodeing=UTF-8 3)htmlテンプレートパス:...srcmainresourcesmail
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>hellotitle>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
head>
<body>
<p th:text="'Hello!, ' + ${hehe} + '!'" >p>
body>
html>
4)実現
@Autowired
protected JavaMailSender javaMailSender;
@Autowired
protected TemplateEngine thymeleaf;
3.テスト
@RequestMapping("/sendTestEmail")
public Object sendTestEmail(@RequestParam("messagepayload") String messagepayload) throws MessagingException {
System.out.println(messagepayload);
emailModeHtmlMail("[email protected]","emailmode","[email protected]");
return messagepayload;
}
/**
* html
* @param to
* @param subject
* @param strText
* @return
*/
protected boolean emailModeHtmlMail(String to, String subject, String strText){
boolean result = true;
MimeMessage mailMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);
Context con = new Context();
con.setVariable("hehe", strText);
String emailtext = thymeleaf.process("emailmode.html", con);
try {
// ,
messageHelper.setTo(to);
messageHelper.setFrom(to);
messageHelper.setSubject(subject);
// true HTML
messageHelper.setText(emailtext, true);
//
javaMailSender.send(mailMessage);
} catch (MessagingException e) {
result = false;
e.printStackTrace();
}
return result;
}
————————————過程の難点1.beanの組み立てがよく分からず、メール送信機が長い間出てこなかったので、@beanがJavaMailSenderを組み立てることに気づきました.@AutowiredはJavaMailSenderを使っていました.以前@beanが組み立てるのはずっとMailSender 2でした.mailフォルダのパス、工事が取得したパスは私が想像していたのとは違って、私はずっとテンプレートに着いて、長い間調整しました.ssl注意4.Environmentは勝手にやってみればOKですが、検討が必要です———————————————この例は「Spring実戦(第4版)」を利用して作成されたもので、対応するコードが入っていて、疑問があればこの本を読むことができます.