springboot整合email:
springboot整合email很简单:
第一步:添加依赖:
第二步:配置文件配置:
有两种一种网易的一种qq的(注意是企业用还是个人用。不注意会出错)【smtp.exmail.qq.com 企业用 | smtp.qq.com 个人用】
我只配置个人用的:配置如下:
注意:qq的授权码是发短信生成的,126的是自己设置的
第三步:email的实现方法:
package com.huhy.demo.email; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import javax.mail.internet.MimeMessage; import java.io.File; /** * @author : huhy on 2018/8/16. * @Project_name:springboot_self_gitlab * @LOCAL:com.huhy.demo.email * @description:springboot整合email */ @Service public class MailService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private JavaMailSender sender; @Value("${spring.mail.username}") private String from; /** * 发送纯文本的简单邮件 * @param to * @param subject * @param content */ public void sendSimpleMail(String to, String subject, String content){ SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(content); try { sender.send(message); logger.info("测试邮件。"); } catch (Exception e) { logger.error("测试邮件发生异常!", e); } } /** * 发送html格式的邮件 * @param to * @param subject * @param content */ public void sendHtmlMail(String to, String subject, String content){ MimeMessage message = sender.createMimeMessage(); try { //true表示需要创建一个multipart message MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); sender.send(message); logger.info("html邮件已经发送。"); } catch (Exception e) { logger.error("发送html邮件时发生异常!", e); } } /** * 发送带附件的邮件 * @param to * @param subject * @param content * @param filePath */ public void sendAttachmentsMail(String to, String subject, String content, String filePath){ MimeMessage message = sender.createMimeMessage(); try { //true表示需要创建一个multipart message MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); FileSystemResource file = new FileSystemResource(new File(filePath)); String fileName = filePath.substring(filePath.lastIndexOf(File.separator)); helper.addAttachment(fileName, file); sender.send(message); logger.info("带附件的邮件已经发送。"); } catch (Exception e) { logger.error("发送带附件的邮件时发生异常!", e); } } /** * 发送嵌入静态资源(一般是图片)的邮件 * @param to * @param subject * @param content 邮件内容,需要包括一个静态资源的id, * @param rscPath 静态资源路径和文件名 * @param rscId 静态资源id */ public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){ MimeMessage message = sender.createMimeMessage(); try { //true表示需要创建一个multipart message MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); FileSystemResource res = new FileSystemResource(new File(rscPath)); helper.addInline(rscId, res); sender.send(message); logger.info("嵌入静态资源的邮件已经发送。"); } catch (Exception e) { logger.error("发送嵌入静态资源的邮件时发生异常!", e); } } }
第四步:单元测试:
1 package com.huhy.demo; 2 3 import com.huhy.demo.email.MailService; 4 import org.junit.Test; 5 import org.junit.runner.RunWith; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.boot.test.context.SpringBootTest; 8 import org.springframework.test.context.junit4.SpringRunner; 9 10 import java.util.HashMap; 11 import java.util.Map; 12 13 @RunWith(SpringRunner.class) 14 @SpringBootTest 15 public class SpringbootEmailApplicationTests { 16 17 @Test 18 public void contextLoads() { 19 } 20 @Autowired 21 private MailService mailService; 22 23 //接收邮箱 24 private String to = "3403903571@qq.com"; 25 26 @Test 27 public void sendSimpleMail() { 28 mailService.sendSimpleMail(to, "主题:简单邮件", "测试邮件内容"); 29 } 30 31 32 @Test 33 public void sendHtmlMail() { 34 Map<String, Object> model = new HashMap<String, Object>(); 35 model.put("time", System.currentTimeMillis()); 36 model.put("message", "huhy 测试邮件"); 37 String content = "111111111111111111111111111111111"; 38 39 mailService.sendHtmlMail(to, "主题:html邮件", content); 40 } 41 42 @Test 43 public void sendAttachmentsMail() { 44 mailService.sendAttachmentsMail(to, "主题:带附件的邮件", "有附件,请查收!", "C:\\Users\\Administrator\\Desktop\\1.png"); 45 } 46 47 @Test 48 public void sendInlineResourceMail() { 49 String rscId = "huhy"; 50 mailService.sendInlineResourceMail(to, 51 "主题:嵌入静态资源的邮件", 52 "<html><body>这是有嵌入静态资源:<img src=\'cid:" + rscId + "\' ></body></html>", 53 "C:\\Users\\Administrator\\Desktop\\1.png", 54 rscId); 55 } 56 57 58 }