本文实例为大家分享了SpringBoot +Mail+FreeMarker发送邮件,供大家参考,具体内容如下
通过spirngboot 自带的mail服务及FreeMarker模板引擎,发送邮
添加依赖
org.springframework.boot spring-boot-starter-freemarkerorg.springframework.boot spring-boot-starter-mailorg.springframework.boot spring-boot-starter-weborg.projectlombok lomboktrue
在application.yml文件中配置Mail信息
spring:
mail:
port: 25
username: ${username}
password: ${password}
protocol: smtp
default-encoding: utf-8
host: ${host}
编写MailService服务
@Service
public class MailServiceImpl implements MailService {
//邮件的发送者
@Value("${spring.mail.username}")
private String from;
//注入MailSender
@Autowired
private JavaMailSender mailSender;
//发送邮件的模板引擎
@Autowired
private FreeMarkerConfigurer configurer;
@Override
public void sendMessageMail(Object params, String title, String templateName) {
try {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom(from);
helper.setTo(InternetAddress.parse("xxxxx@163.com"));//发送给谁
helper.setSubject("【" + title + "-" + LocalDate.now() + " " + LocalTime.now().withNano(0) + "】");//邮件标题
Map model = new HashMap<>();
model.put("params", params);
try {
Template template = configurer.getConfiguration().getTemplate(templateName);
try {
String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
helper.setText(text, true);
mailSender.send(mimeMessage);
} catch (TemplateException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
定义发送邮件对象
发送内容为object,我这里演示一个对象,通过模板渲染方式接收内容
@Data
public class Message {
private String messageCode;
private String messageStatus;
private String cause;
}
在项目templates目录新建个message.ftl文件
消息通知 table { font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; width: 100%; border-collapse: collapse; } td, th { font-size: 1em; border: 1px solid #5B4A42; padding: 3px 7px 2px 7px; } th { font-size: 1.1em; text-align: center; padding-top: 5px; padding-bottom: 4px; background-color: #24A9E1; color: #ffffff; } 邮件消息通知
MessageCode MessageStatus Cause ${(params.messageCode)!""} ${(params.messageStatus)!""} ${(params.cause)!""}
测试邮件发送
新建controller类
@RestController
public class MailController {
@Autowired
private MailService mailService;
@RequestMapping(value = "/sendMessage", method = RequestMethod.GET)
public void sendMailMessage() {
Message message = new Message();
message.setMessageCode("MissingParameter");
message.setMessageStatus("Failed");
message.setCause("缺少参数,请确认");
mailService.sendMessageMail(message, "测试消息通知", "message.ftl");
}
}
启动服务访问 http://localhost:8080/sendMessage
查看邮箱
源码地址
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



