spring boot 发送邮件

简单几步,实现在spring boot中发送邮件:

1、引入依赖:

[html] view plain copy
 
  1. <dependency>  
  2.     <groupId>org.springframework.boot</groupId>  
  3.     <artifactId>spring-boot-starter-mail</artifactId>  
  4. </dependency>  


2、application.yml中配置邮件相关的参数:

[plain] view plain copy
 
  1. spring:  
  2.   mail:  
  3.     host: smtp.exmail.qq.com  
  4.     username: 用户名  
  5.     password: 密码  
  6.     properties:  
  7.       mail:  
  8.         smtp:  
  9.           auth: true  
  10.           starttls:  
  11.             enable: true  
  12.             required: true  

 

3、邮件service代码:

 

[java] view plain copy
 
  1. @Service  
  2. public class MailService {  
  3.     private final Logger logger = LoggerFactory.getLogger(this.getClass());  
  4.       
  5.     @Autowired  
  6.     private JavaMailSender sender;  
  7.       
  8.     @Value("${spring.mail.username}")  
  9.     private String from;  
  10.       
  11.     /** 
  12.      * 发送纯文本的简单邮件 
  13.      * @param to 
  14.      * @param subject 
  15.      * @param content 
  16.      */  
  17.     public void sendSimpleMail(String to, String subject, String content){  
  18.         SimpleMailMessage message = new SimpleMailMessage();  
  19.         message.setFrom(from);  
  20.         message.setTo(to);  
  21.         message.setSubject(subject);  
  22.         message.setText(content);  
  23.   
  24.         try {  
  25.             sender.send(message);  
  26.             logger.info("简单邮件已经发送。");  
  27.         } catch (Exception e) {  
  28.             logger.error("发送简单邮件时发生异常!", e);  
  29.         }  
  30.     }  
  31.       
  32.     /** 
  33.      * 发送html格式的邮件 
  34.      * @param to 
  35.      * @param subject 
  36.      * @param content 
  37.      */  
  38.     public void sendHtmlMail(String to, String subject, String content){  
  39.         MimeMessage message = sender.createMimeMessage();  
  40.   
  41.         try {  
  42.             //true表示需要创建一个multipart message  
  43.             MimeMessageHelper helper = new MimeMessageHelper(message, true);  
  44.             helper.setFrom(from);  
  45.             helper.setTo(to);  
  46.             helper.setSubject(subject);  
  47.             helper.setText(content, true);  
  48.   
  49.             sender.send(message);  
  50.             logger.info("html邮件已经发送。");  
  51.         } catch (MessagingException e) {  
  52.             logger.error("发送html邮件时发生异常!", e);  
  53.         }  
  54.     }  
  55.       
  56.     /** 
  57.      * 发送带附件的邮件 
  58.      * @param to 
  59.      * @param subject 
  60.      * @param content 
  61.      * @param filePath 
  62.      */  
  63.     public void sendAttachmentsMail(String to, String subject, String content, String filePath){  
  64.         MimeMessage message = sender.createMimeMessage();  
  65.   
  66.         try {  
  67.             //true表示需要创建一个multipart message  
  68.             MimeMessageHelper helper = new MimeMessageHelper(message, true);  
  69.             helper.setFrom(from);  
  70.             helper.setTo(to);  
  71.             helper.setSubject(subject);  
  72.             helper.setText(content, true);  
  73.   
  74.             FileSystemResource file = new FileSystemResource(new File(filePath));  
  75.             String fileName = filePath.substring(filePath.lastIndexOf(File.separator));  
  76.             helper.addAttachment(fileName, file);  
  77.               
  78.             sender.send(message);  
  79.             logger.info("带附件的邮件已经发送。");  
  80.         } catch (MessagingException e) {  
  81.             logger.error("发送带附件的邮件时发生异常!", e);  
  82.         }  
  83.     }  
  84.       
  85.     /** 
  86.      * 发送嵌入静态资源(一般是图片)的邮件 
  87.      * @param to 
  88.      * @param subject 
  89.      * @param content 邮件内容,需要包括一个静态资源的id,比如:<img src=\"cid:rscId01\" > 
  90.      * @param rscPath 静态资源路径和文件名 
  91.      * @param rscId 静态资源id 
  92.      */  
  93.     public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){  
  94.         MimeMessage message = sender.createMimeMessage();  
  95.   
  96.         try {  
  97.             //true表示需要创建一个multipart message  
  98.             MimeMessageHelper helper = new MimeMessageHelper(message, true);  
  99.             helper.setFrom(from);  
  100.             helper.setTo(to);  
  101.             helper.setSubject(subject);  
  102.             helper.setText(content, true);  
  103.   
  104.             FileSystemResource res = new FileSystemResource(new File(rscPath));  
  105.             helper.addInline(rscId, res);  
  106.               
  107.             sender.send(message);  
  108.             logger.info("嵌入静态资源的邮件已经发送。");  
  109.         } catch (MessagingException e) {  
  110.             logger.error("发送嵌入静态资源的邮件时发生异常!", e);  
  111.         }  
  112.     }  
  113. }  

 

4、单元测试代码:

 

[java] view plain copy
 
  1. public class MailTests extends BasicUtClass{  
  2.     @Autowired  
  3.     private MailService mailService;  
  4.       
  5.     private String to = "xujijun@mail.cn";  
  6.       
  7.     @Test  
  8.     public void sendSimpleMail() {  
  9.         mailService.sendSimpleMail(to, "主题:简单邮件", "测试邮件内容");  
  10.     }  
  11.       
  12.     @Autowired  
  13.     VelocityEngine velocityEngine;  
  14.       
  15.     @Test  
  16.     public void sendHtmlMail() {  
  17.         Map<String, Object> model = new HashMap<String, Object>();  
  18.         model.put("time", XDateUtils.nowToString());  
  19.         model.put("message", "这是测试的内容。。。");  
  20.         model.put("toUserName", "张三");  
  21.         model.put("fromUserName", "老许");  
  22.         String content = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "welcome.vm", "UTF-8", model);  
  23.           
  24.         mailService.sendHtmlMail(to, "主题:html邮件", content);  
  25.     }  
  26.   
  27.     @Test  
  28.     public void sendAttachmentsMail() {  
  29.         mailService.sendAttachmentsMail(to, "主题:带附件的邮件", "有附件,请查收!", "C:\\Users\\Xu\\Desktop\\csdn\\1.png");  
  30.     }  
  31.       
  32.     @Test  
  33.     public void sendInlineResourceMail() {  
  34.         String rscId = "rscId001";  
  35.         mailService.sendInlineResourceMail(to,  
  36.                 "主题:嵌入静态资源的邮件",  
  37.                 "<html><body>这是有嵌入静态资源:<img src=\'cid:" + rscId + "\' ></body></html>",  
  38.                 "C:\\Users\\Xu\\Desktop\\csdn\\1.png",  
  39.                 rscId);  
  40.     }  
  41. }  

 

源代码参考:https://github.com/xujijun/my-spring-boot

 

posted @ 2018-01-12 10:29  庞国明  阅读(243)  评论(0编辑  收藏  举报