一、引入依赖
<!-- mail --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
二、配置邮箱的参数
spring: mail: # 163 host: smtp.163.com port: username: 你的邮箱 password: 邮箱获取到的16位字符串长度的授权码 protocol: smtp default-encoding: UTF-8 properties: mail.smtp.auth: true mail.smtp.starttls.enable: true mail.smtp.starttls.required: true mail.smtp.socketFactory.port: 465 mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory mail.smtp.socketFactory.fallback: false


三、写模板和发送内容(template.html)
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>邮件</title>
</head>
<body>
<div th:text="${subject}"></div>
<div>书籍清单
<table border="1">
<tr>
<td>图书名称</td>
<td>图书作者</td>
<td>售卖本数</td>
</tr>
<tr th:each="book:${books}">
<td th:text="${book.name}"></td>
<td th:text="${book.coder}"></td>
<td th:text="${book.count}"></td>
</tr>
</table>
</div>
</body>
</html>
-- SendEmailController
package com.wangguo.mybatisgen.controller;
import com.wangguo.mybatisgen.service.MailService;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* @Author wangguo
* @Date 2021/1/25
*/
@RequestMapping("/email")
@Slf4j
@RestController
public class SendEmailController {
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
private String name;
private String coder;
private int count;
}
@Autowired
private MailService mailService;
@Autowired
private TemplateEngine templateEngine;
@GetMapping("/send")
public void sendEmail(){
Context context = new Context();
context.setVariable("subject", "古典文化书籍");
List<Book> books = new ArrayList<>();
books.add(new Book("《西游记》", "吴承恩", 100));
books.add(new Book("《三国演义》", "罗贯中", 100));
books.add(new Book("《水浒传》", "施耐庵", 1000));
context.setVariable("books", books);
String template = "template.html";//模板名称,位置 默认在resource/templates/xxx.html
String to = "wangguo@tobosoft.com.cn";
mailService.send(to, "模板邮件", UUID.randomUUID().toString().toUpperCase(),context,template);
}
}
-- MailService
package com.wangguo.mybatisgen.service;
import org.thymeleaf.context.Context;
public interface MailService {
public void send(String to, String subject, String text, Context context, String template);
}
-- MailServiceImpl
package com.wangguo.mybatisgen.service.impl;
import com.wangguo.mybatisgen.service.MailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.*;
import javax.mail.internet.MimeMessage;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
@Service
@Slf4j
public class MailServiceImpl implements MailService {
@Autowired
private JavaMailSender mailSender;
/**
* 用来发送模版邮件
*/
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private TemplateEngine templateEngine;
@Override
public void send(String to, String subject, String text, Context context,String template) {
String from = "xxxxxx.com";//你邮箱地址
String emailContent = templateEngine.process(template, context);
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(emailContent, true);
} catch (MessagingException e) {
e.printStackTrace();
}
mailSender.send(message);
}
}


564

被折叠的 条评论
为什么被折叠?



