用途:此文仅供,自己今后的小程序通过邮件,批量通知用户。

简单记录了一些发送基本邮件的操作。


项目(SpringBoot版本为2.1.2.RELEASE):

核心依赖(其他相关依赖,在其使用的地方具体说明):

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-mail</artifactId>
  4. </dependency>

application.yml——邮件发送相关配置:

  1. spring:
  2. mail:
  3. host: smtp.qq.com
  4. username: ***@qq.com
  5. password: *** #qq邮箱开启POP3/SMTP服务后,生成的授权码
  6. receiver: ***@qq.com
  7. protocol: smtp
  8. default-encoding: utf-

邮件实体类(使用Lombok的注解简化实体构造):

  1. import lombok.Data;
  2. import org.springframework.core.io.FileSystemResource;
  3.  
  4. @Data
  5. public class MailBean {
  6. private String subject;
  7.  
  8. private String text;
  9.  
  10. private FileSystemResource file;
  11.  
  12. private String attachmentFilename;
  13.  
  14. private String contentId;
  15. }

简单封装邮件发送的工具类:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.mail.SimpleMailMessage;
  4. import org.springframework.mail.javamail.JavaMailSender;
  5. import org.springframework.mail.javamail.MimeMessageHelper;
  6. import org.springframework.stereotype.Component;
  7.  
  8. import javax.mail.MessagingException;
  9. import javax.mail.internet.MimeMessage;
  10.  
  11. @Component
  12. public class MailUtil {
  13. private final JavaMailSender mailSender;
  14.  
  15. @Value("${spring.mail.username}")
  16. private String sender;
  17.  
  18. @Value("${spring.mail.receiver}")
  19. private String receiver;
  20.  
  21. @Autowired
  22. public MailUtil(JavaMailSender mailSender) {
  23. this.mailSender = mailSender;
  24. }
  25.  
  26. public void sendMailSimple() {
  27. SimpleMailMessage mimeMessage = new SimpleMailMessage();
  28. mimeMessage.setFrom(sender);
  29. mimeMessage.setTo(receiver);
  30. mimeMessage.setSubject("主题");
  31. mimeMessage.setText("正文");
  32. mailSender.send(mimeMessage);
  33. }
  34.  
  35. private void sendMail(MailBean mailBean, boolean html, boolean multipart) {
  36. MimeMessage mimeMessage = mailSender.createMimeMessage();
  37.  
  38. try {
  39. MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, multipart);
  40. helper.setFrom(sender);
  41. helper.setTo(receiver);
  42. helper.setSubject(mailBean.getSubject());
  43. helper.setText(mailBean.getText(), html);
  44.  
  45. if (mailBean.getFile() != null) {
  46. helper.addAttachment(mailBean.getAttachmentFilename(), mailBean.getFile());
  47. }
  48. } catch (MessagingException e) {
  49. e.printStackTrace();
  50. }
  51.  
  52. mailSender.send(mimeMessage);
  53. }
  54.  
  55. public void sendMail(MailBean mailBean) {
  56. sendMail(mailBean, true, true);
  57. }
  58.  
  59. public void sendMailText(MailBean mailBean) {
  60. sendMail(mailBean, false, false);
  61. }
  62.  
  63. public void sendMailHtml(MailBean mailBean) {
  64. sendMail(mailBean, true, false);
  65. }
  66.  
  67. public void sendMailInline(MailBean mailBean) {
  68. MimeMessage mimeMessage = mailSender.createMimeMessage();
  69. MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
  70. try {
  71. helper.setFrom(sender);
  72. helper.setTo(receiver);
  73. helper.setSubject(mailBean.getSubject());
  74.  
  75. helper.setText(mailBean.getText(), true);
  76. helper.addInline(mailBean.getContentId(), mailBean.getFile());
  77. } catch (MessagingException e) {
  78. e.printStackTrace();
  79. }
  80.  
  81. mailSender.send(mimeMessage);
  82. }
  83. }

单元测试就不写了,忘记怎么写了。发送测试:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.core.io.FileSystemResource;
  3. import org.springframework.util.ResourceUtils;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import org.thymeleaf.TemplateEngine;
  7. import org.thymeleaf.context.Context;
  8.  
  9. import java.io.File;
  10. import java.io.IOException;
  11.  
  12. @RestController
  13. public class MailController {
  14. private final MailUtil mailUtil;
  15. private final TemplateEngine templateEngine;
  16.  
  17. @Autowired
  18. public MailController(MailUtil mailUtil, TemplateEngine templateEngine) {
  19. this.mailUtil = mailUtil;
  20. this.templateEngine = templateEngine;
  21. }
  22.  
  23. @GetMapping("/simple")
  24. public void simple() {
  25. MailBean mailBean = new MailBean();
  26. mailBean.setSubject("简单纯文本邮件测试");
  27. mailBean.setText("内容");
  28. mailUtil.sendMailText(mailBean);
  29. // mailUtil.sendMailSimple();
  30. }
  31.  
  32. @GetMapping("/html")
  33. public void html() {
  34. MailBean mailBean = new MailBean();
  35. mailBean.setSubject("简单html代码,邮件测试");
  36. mailBean.setText("<h1>表达个意思</h1>");
  37. mailUtil.sendMailHtml(mailBean);
  38. }
  39.  
  40. @GetMapping("/attachment")
  41. public void attachment() {
  42. String path = "classpath:反.jpg";
  43. try {
  44. File file = ResourceUtils.getFile(path);
  45. FileSystemResource fileSystemResource = new FileSystemResource(file);
  46.  
  47. MailBean mailBean = new MailBean();
  48. mailBean.setSubject("主题");
  49. mailBean.setText("内容");
  50. mailBean.setAttachmentFilename(file.getName());
  51. mailBean.setFile(fileSystemResource);
  52. mailUtil.sendMail(mailBean);
  53. } catch (IOException e) {
  54. e.printStackTrace();
  55. }
  56. }
  57.  
  58. /*
  59. 使用模板引擎,此处为thymeleaf
  60. */
  61. @GetMapping("/template")
  62. public void template() {
  63. MailBean mailBean = new MailBean();
  64. mailBean.setSubject("主题");
  65.  
  66. Context context = new Context();
  67. context.setVariable("username", "pinecone");
  68. String content = templateEngine.process("template", context);
  69. mailBean.setText(content);
  70. mailUtil.sendMail(mailBean);
  71. }
  72. }

Java发送邮件 —— SpringBoot集成Java Mail的更多相关文章

  1. 【Java】Springboot集成Druid

    Springboot集成Druid方案:一个是在POM中直接配置druid-spring-boot-starter,不用写任何代码:一个是配置druid,写几行代码,可以加入:在方案一基础上加入sta ...

  2. java发送邮件完整实例 java邮件工具类

    http://yuncode.net/code/c_552a2e2dc593894 package com.srie.mail; import java.util.Properties; import ...

  3. SpringBoot | 集成Java Mail

    Spring Boot 对Java mail 集成提供了自动配置的支持,只需要配置依赖以及在application.properties 里配置邮件信息即可. 添加依赖: <dependency ...

  4. Java发送邮件,所遇到的常见需求

    明天要做关于发送邮件的接口,虽然我之前已用Java Mail做过许多关于邮件的发送.但同事说有点难点,虽我还不知难点在哪,还是要复习下.凡事预则立,不预则废嘛~ 所需的包: Java Mail : 目 ...

  5. 通过springBoot集成搭建webScoket服务器

    前言: 最近工作中有一个需求,就是服务端要主动推送消息给客户端,而我们平常的Http请求只能一请求一响应,为此学习了webScokset通讯技术,以下介绍的是java 通过SpringBoot集成we ...

  6. Java发送Email邮件及SpringBoot集成

    一:普通方式发送 1.导包 <!--Java MAil 发送邮件API--> <dependency> <groupId>javax.mail</groupI ...

  7. 关于使用JavaMail发送邮件抛出java.lang.NoSuchMethodError: com.sun.mail.util.TraceInputStream.<init>(Ljava异常的解决方法

    我们在使用JavaMail时有可能会如下异常: Exception in thread "main" java.lang.NoSuchMethodError: com.sun.ma ...

  8. SpringBoot集成websocket(java注解方式)

    第一种:SpringBoot官网提供了一种websocket的集成方式 第二种:javax.websocket中提供了元注解的方式 下面讲解简单的第二种 添加依赖 <dependency> ...

  9. springboot集成mail实现邮件服务

    1,新建mailconfig类,对邮件服务固定配置进行实体封装: import java.util.Properties; import org.springframework.beans.facto ...

随机推荐

  1. 1.C++基础(C、C++)

    1.命名空间 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定 义于一个名为std的namespace中. 命名空间std封装的是标准程序库的名称,标准程序库为了 ...

  2. 小白用阿里云搭载wordpress个人博客

    阿里云服务已经购买多时,却一直没时间部署内容,借着这次机会自己照着博客园园友的方式用wordpress搭建了个人博客! 创建wordpress的内容就不多说了,直接附链接来源:https://www. ...

  3. C#路径中获取文件全路径、目录、扩展名、文件名称

    C#路径中获取文件全路径.目录.扩展名.文件名称常用函数 需要引用System.IO 直接可以调用Path的静态方法 class Program { static void Main(string[] ...

  4. 实验一 C运行环境与最简单程序设计

    #include<stdio.h> int main(){ int a,b,sum; a=123; b=456; sum=a+b; printf("sum is %d\n&quo ...

  5. 《linux就该这么学》第十三节课:第11章和第12章,vsftpd服务与samba和nfs服务

    第十一章 (借鉴请改动) 11.1.文件传输协议 FTP文件穿数协议,端口20用于数据传输,21端口用于传输相关FTP命令 ftp协议的两种工作模式: 主动模式:ftp向客户端发起 被动模式(默认): ...

  6. PHP----------支付宝支付的一些注意事项。该博客只适用于20180209之后,的app支付宝支付。

    1.签名方式: 2.设置应用公钥.也就是开发者公钥.

  7. 【论文速读】Sheng Zhang_AAAI2018_Feature Enhancement Network_A Refined Scene Text Detector

    Sheng Zhang_AAAI2018_Feature Enhancement Network_A Refined Scene Text Detector 作者 关键词 文字检测.水平文字.Fast ...

  8. [动态规划]数字三角形(版本I-III)

    level 1 1.1题目 1.1.1题目描述 考虑在下面被显示的数字金字塔. 写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大.每一步可以走到左下方的点也可以到达右下方的点. 在 ...

  9. 自己动手写java锁

    1.LockSupport的park和unpark方法的基本使用,以及对线程中断的响应性 LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语.java锁和同步器 ...

  10. pyCharm最新2018激活码

    本教程对jetbrains全系列可用例:IDEA.WebStorm.phpstorm.clion等 因公司的需求,需要做一个爬取最近上映的电影.列车号.航班号.机场.车站等信息,所以需要我做一个爬虫项 ...