前言

邮件服务在开发中非常常见,比如用邮件注册账号、邮件作为找回密码的途径、用于订阅内容定期邮件推送等等,下面就简单的介绍下邮件实现方式。

准备

一个用于发送的邮箱,本文是用腾讯的域名邮箱,可以自己搞一个域名绑定下,登录地址:http://domain.mail.qq.com

邮件服务实现

1.添加依赖

<!-- 启用邮箱 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2.配置文件

spring.mail.host=smtp.qq.com
spring.mail.username=zwqh@clover1314.com
spring.mail.password=*****
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

3.实现示例

@Service
public class MailTool { @Value("${spring.mail.username}")
private String from; @Autowired
private JavaMailSender mailSender; /**
* 发送邮件
*
* @return
*/
public boolean send() {
try {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);//发送者
message.setTo("zwqh@clover1314.com");//接受者
message.setCc("sohuniuer@sina.com");// 抄送
message.setSubject("邮件主题"); //邮件主题
message.setText("这里是邮件内容");//邮件内容
mailSender.send(message);
System.out.println("邮件发送成功");
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} /**
* 发送富文本邮件
*
* @return
*/
public boolean sendHtml() {
// 使用 JavaMail 的 MimeMessage,支持更多复杂的邮件格式和内容
MimeMessage mimeMessage = mailSender.createMimeMessage();
try {
// 创建 MimeMessageHelper 对象,处理 MimeMessage 辅助类
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
// 使用辅助类 MimeMessage 设定参数
helper.setFrom(from);
helper.setTo("zwqh@clover1314.com");
helper.setBcc("sohuniuer@sina.com");//密送
helper.setSubject("富文本邮件主题");
helper.setText("<h1>这是富文本邮件内容标题</h1><p style='color:red;'>这里是段落一</p><p style='color:orange;'>这里是段落二</p>",
true);
mailSender.send(mimeMessage);
System.out.println("邮件发送成功");
return true;
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
}
/**
* 发送富文本带附件的邮件
* @return
*/
public boolean sendHtmlWithAttach() {
// 使用 JavaMail 的 MimeMessage,支持更多复杂的邮件格式和内容
MimeMessage mimeMessage = mailSender.createMimeMessage(); try {
// 创建 MimeMessageHelper 对象,处理 MimeMessage 辅助类
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom(from);
helper.setTo("zwqh@clover1314.com");
helper.setSubject("富文本带附件的邮件主题");
helper.setText("<h1>这是富文本邮件内容标题</h1><p style='color:red;'>这里是段落一</p><p style='color:orange;'>这里是段落二</p>",
true);
//加载文件资源作为附件
ClassPathResource file=new ClassPathResource("static/avatar2.jpg");
//添加附件,并重命名
helper.addAttachment("附件.jpg", file);
mailSender.send(mimeMessage);
System.out.println("邮件发送成功");
return true;
} catch (MessagingException e) {
e.printStackTrace();
return false;
} } }

4.Controller 用于测试

@RestController
public class MailController { @Autowired
private MailTool mailTool; @RequestMapping("/send")
public String send() {
mailTool.send();
return "send success";
} @RequestMapping("/sendHtml")
public String sendHtml() {
mailTool.sendHtml();
return "sendHtml success";
} @RequestMapping("/sendHtmlWithAttach")
public String sendHtmlWithAttach() {
mailTool.sendHtmlWithAttach();
return "sendHtmlWithAttach success";
} }

5.测试效果

示例代码

github

码云

非特殊说明,本文版权归 朝雾轻寒 所有,转载请注明出处.

原文标题:Spring Boot 2.X(十三):邮件服务

原文地址:https://www.zwqh.top/article/info/22

如果文章对您有帮助,请扫码关注下我的公众号,文章持续更新中...

最新文章

  1. MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除
  2. mac OS X Yosemite (10.10.5) 下 安装vim 7.4笔记
  3. Ubuntu 初始化Root账户密码
  4. jmx : ClientCommunicatorAdmin Checker-run
  5. AAL template: ROI to brain lobe
  6. 感知机学习算法 python实现
  7. Python2.7.3 学习——第一个程序 Hello Python World
  8. TRIZ系列-创新原理-22-变害为利原理
  9. ListBox之类控件的Item项显示对象的两个属性
  10. C# 在RichTextBox中滚动鼠标时滚动的是父窗口的滚动条
  11. struts2捕获action类异常
  12. codeforces476D
  13. 关于token和refresh token
  14. springboot2.0整合es的异常总结
  15. nginx反向代理配置(nginx.conf+proxy_set_header)
  16. c/c++ socket函数详解
  17. 数论知识总结——史诗大作(这是一个flag)
  18. NYOJ 409 郁闷的C小加(三) (字符串处理)
  19. Ruby中类的进阶(继承,private, public, protect)
  20. 严重: Exception starting filter struts2 Unable to load configuration. - [unknown location]

热门文章

  1. jQuery基于json与cookie实现购物车的方法
  2. javascript实用Date工具
  3. react-starter-projects
  4. [UWP]使用CompositionGeometricClip裁剪复杂图形及进行动画
  5. Redis Cluster 自动化安装,扩容和缩容
  6. Python列表中的字典按照该字典下的键值进行排序
  7. 数据库Oracle的安装与卸载
  8. CodeForces 607B zuma
  9. Day 06 作业
  10. Orleans 初接触(一) 入门例子