本文共 6267 字,大约阅读时间需要 20 分钟。
这里就以 QQ 邮箱来进行演示,使用 QQ 邮箱首先要申请开通 POP3/SMTP 服务或者 IMAP/SMTP 服务,这里介绍下 QQ 邮箱如何开通 POP3/SMTP 服务或者 IMAP/SMTL服务的步骤
1.登陆QQ邮箱,先点击顶部的设置按钮和账户按钮,如下图所示: 2.在账户的最下方找到 POP3/SMTP 服务,单击后面的 开启 按钮,如下图所示: 然后它会提示你发送一条短信,你按照它的要求发一条短信,操作成功后,你会获得一个授权码,授权码保存下来等会要用到1.首先搭建SpringBoot环境,添加如下依赖:
org.springframework.boot spring-boot-starter-mail org.springframework.boot spring-boot-starter-web
2.在 application.properties 文件中添加邮件的基本配置,代码如下:
# 配置 smtp 服务器地址spring.mail.host=smtp.qq.com# smtp 服务器的端口spring.mail.port=587# 配置邮箱用户名spring.mail.username=你自己的邮箱# 配置申请到的授权码spring.mail.password=这里填写刚才短信申请到的授权码# 配置邮件编码spring.mail.default-encoding=UTF-8# 配饰 SSL 加密工厂spring.mail.properties.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory# 表示开启 DEBUG 模式spring.mail.properties.mail.debug=true
3.测试
@SpringBootTestclass SendqqemailApplicationTests { @Autowired JavaMailSender javaMailSender; /** * 发送简单邮件 */ @Test public void sendSimpleMail() { SimpleMailMessage msg = new SimpleMailMessage(); //构建一个邮件对象 msg.setSubject("这是一封测试邮件"); // 设置邮件主题 msg.setFrom("bai211425401@qq.com"); // 设置邮箱发送者 msg.setTo("1712900841@qq.com"); // 设置邮件接收者,可以有多个接收者 msg.setSentDate(new Date()); // 设置邮件发送日期 msg.setText("这是测试邮件的正文"); // 设置邮件的正文 javaMailSender.send(msg); }}
这里面要注意,当你设置邮件发送者时 ”这个邮件发送者“必须是你application.properties 中配置的邮件账户 执行此方法,即可看到邮件发送成功,如下图所示:
附件可以是图片,也可以是普通文件,都可以支持发送
/** * 发送带附件的邮件 * @throws MessagingException */ @Test public void sendAttachFileMail() throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); helper.setSubject("这是一封测试邮件"); helper.setFrom("bai211425401@qq.com"); helper.setTo("1712900841@qq.com"); helper.setSentDate(new Date()); helper.setText("这是测试邮件的正文"); helper.addAttachment("fileimg.png",new File("C:\\Users\\bai\\Pictures\\Camera Roll\\img\\1.png")); javaMailSender.send(mimeMessage); }
这里使用 MimeMessageHelper 简化了邮件配置,他的构造方法的第二个参数 true 表示构造一个 multipart message 类型的邮件,multiaprt message 类型的邮件包含多个正文、附件以及内嵌资源,邮件的表现形式更加丰富,最后通过 addAttachment 方法添加附件,结果如下图:
图片资源和附件的区别就在于 图片资源是放在邮件正文中的,就是一打开邮件就能看到图片
/** * 发送带图片资源的邮件 * @throws MessagingException */ @Test public void sendImgResMail() throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); helper.setSubject("这是一封测试邮件"); helper.setFrom("bai211425401@qq.com"); helper.setTo("1712900841@qq.com"); helper.setSentDate(new Date()); helper.setText("hello 大家好,我是一封测试邮件,我包含了两张图片,分别如下
第一张图片:
第二张图片:
",true); helper.addInline("p01",new FileSystemResource(new File("C:\\Users\\bai\\Pictures\\Camera Roll\\img\\1.png"))); helper.addInline("p02",new FileSystemResource(new File("C:\\Users\\bai\\Pictures\\Camera Roll\\img\\2.png"))); javaMailSender.send(mimeMessage); }
效果如下图所示:
org.springframework.boot spring-boot-starter-freemarker
在 resources/templates 目录下创建一个 mail.ftl 作为邮件发送模板:
Freemaker邮件模板 hello 欢迎加入 Spring Boot 大家族,您的入职信息如下:
姓名 | ${username} |
工号 | ${num} |
薪水 | ${salary} |
/** * 使用 Freemaker 作为邮件模板 * @throws MessagingException */ @Test public void sendFreemakerMail() throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); helper.setSubject("这是一封测试邮件"); helper.setFrom("bai211425401@qq.com"); helper.setTo("1712900841@qq.com"); helper.setSentDate(new Date()); // 构建 Freemaker 的基本配置 Configuration configuration = new Configuration(Configuration.VERSION_2_3_0); // 配置模板位置 ClassLoader loader = SendqqemailApplication.class.getClassLoader(); configuration.setClassLoaderForTemplateLoading(loader,"templates"); // 加载模板 try { Template template = configuration.getTemplate("mail.ftl"); Employee entity = new Employee("张三",1001,6500.0); StringWriter out = new StringWriter(); // 模板渲染,渲染的结果将被保存到 out 中,将 out 中的 html 字符串发送即可 template.process(entity,out); helper.setText(out.toString(),true); javaMailSender.send(mimeMessage); }catch (Exception e){ e.printStackTrace(); } }
效果图如下:
org.springframework.boot spring-boot-starter-thymeleaf
在 resources/templates 目录下创建一个 mail.html 作为邮件发送模板:
Thymeleaf邮件模板 hello 欢迎加入 Spring Boot 大家族,您的入职信息如下:
姓名 | |
工号 | |
薪水 |
/** * 使用 Thymeleaf 作为邮件模板 * @throws MessagingException */ @Test public void sendThymeleafMail() throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); helper.setSubject("这是一封测试邮件"); helper.setFrom("bai211425401@qq.com"); helper.setTo("1712900841@qq.com"); helper.setSentDate(new Date()); Context context = new Context(); context.setVariable("username","李四"); context.setVariable("num","1002"); context.setVariable("salary",8000); String process = templateEngine.process("mail.html",context); helper.setText(process,true); javaMailSender.send(mimeMessage); }
效果图如下:
看完对你有帮助的话点个赞再走吧!
有问题欢迎留言讨论!转载地址:http://aiqwi.baihongyu.com/