前期准备:开启163SMTP服务,并构建基本项目结构
- 添加相关pom依赖
<!--发送邮件所需依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 添加相关配置
server:
port: 9898
spring:
mail:
protocol: smtp
username: ********@163.com
password: UU************NZM //授权码
default-encoding: UTF-8
host: smtp.163.com
发送简单文本邮件
@Value("${spring.mail.username}")
private String mailSetFrom;
private static String mailSetTo = "*****u@foxmail.com";
@Autowired
private JavaMailSender mailSender;
/**
* 简单邮件发送
*/
@Test
public void sendSimpleMail(){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(mailSetFrom);
message.setTo(mailSetTo);
message.setSubject("这是测试主题");
message.setText("测试邮件内容");
mailSender.send(message);
}
带附件的邮件发送
@Value("${spring.mail.username}")
private String mailSetFrom;
private static String mailSetTo = "*****u@foxmail.com";
@Autowired
private JavaMailSender mailSender;
/**
* 带有附件的邮件发送
*/
@Test
public void sendMailWithAnnex() throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setFrom(mailSetFrom);
helper.setTo(mailSetTo);
helper.setSubject("这是发送带有附件的邮件发送测试");
helper.setText("这是一封带有附件的邮件的测试");
/*设置附件*/
FileSystemResource fileSystemResource = new FileSystemResource(new File("图片路径static\\images\\photo.jpg"));
helper.addAttachment("这是附件名附件-1.jpg",fileSystemResource);
helper.addAttachment("附件-2.jpg",fileSystemResource);
/*发送邮件*/
mailSender.send(mimeMessage);
}
嵌入静态资源的邮件发送
经测试163邮箱SMTP发送静态资源有钱会被退回,误判为垃圾邮件;
这里采用QQ邮箱SMTP服务
@Value("${spring.mail.username}")
private String mailSetFrom;
private static String mailSetTo = "hmoumou@foxmail.com";
@Autowired
private JavaMailSender mailSender;
/**
* 在发送的邮件中迁入静态资源
*/
@Test
public void sendMailWithStaticSource() throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom(mailSetFrom);
helper.setTo(mailSetTo);
helper.setSubject("这是一封嵌入静态资源的邮件发送主题");
helper.setText("<html><body><h3>这一封邮件静态资源</h3><img src=\"cid:photo\"></body></html>",true);
FileSystemResource fileSystemResource = new FileSystemResource(new File("static\\images\\photo.jpg"));
/*addLine函数中的资源名称photo必须与正文text中的cid一致!!*/
helper.addInline("photo",fileSystemResource);
mailSender.send(mimeMessage);
}
使用freemark模板发送邮件
引入相关依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
-
自定义模板文件样式
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/> </head> <body> <h4>你好,${userName}。欢迎注册本网站</h4> <img src="https://dss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3461177213,1528805342&fm=26&gp=0.jpg"> <table> <tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr> <a href="https://www.baidu.com"></a> </table> </body> </html>
-
@Value("${spring.mail.username}") private String mailSetFrom; private static String mailSetTo = "hmoumou@foxmail.com"; @Autowired private JavaMailSender mailSender; @Autowired private Configuration configuration; /** * 使用模板文件发送邮件 */ @Test public void sendMailWithTemplate() throws MessagingException, IOException, TemplateException { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom(mailSetFrom); helper.setTo(mailSetTo); helper.setSubject("通过模板文件进行"); HashMap<String, Object> model = new HashMap<>(); model.put("userName","章邯"); Template template = configuration.getTemplate("123.ftl"); String html = FreeMarkerTemplateUtils.processTemplateIntoString(template,model); helper.setText(html,true); mailSender.send(mimeMessage); }