博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 实现(简单邮件,附件邮件)发送
阅读量:3947 次
发布时间:2019-05-24

本文共 6267 字,大约阅读时间需要 20 分钟。

Spring Boot如何实现邮件发送

准备工作

这里就以 QQ 邮箱来进行演示,使用 QQ 邮箱首先要申请开通 POP3/SMTP 服务或者 IMAP/SMTP 服务,这里介绍下 QQ 邮箱如何开通 POP3/SMTP 服务或者 IMAP/SMTL服务的步骤

1.登陆QQ邮箱,先点击顶部的设置按钮和账户按钮,如下图所示:
在这里插入图片描述
在这里插入图片描述
2.在账户的最下方找到 POP3/SMTP 服务,单击后面的 开启 按钮,如下图所示:
在这里插入图片描述
然后它会提示你发送一条短信,你按照它的要求发一条短信,操作成功后,你会获得一个授权码,授权码保存下来等会要用到

1.发送简单邮件

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 中配置的邮件账户

执行此方法,即可看到邮件发送成功,如下图所示:
在这里插入图片描述

2.发送带附件的邮件

附件可以是图片,也可以是普通文件,都可以支持发送

/**     *  发送带附件的邮件     * @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 方法添加附件,结果如下图:

在这里插入图片描述

3.发送带图片资源的邮件

图片资源和附件的区别就在于 图片资源是放在邮件正文中的,就是一打开邮件就能看到图片

/**     *  发送带图片资源的邮件     * @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); }

效果如下图所示:

在这里插入图片描述

4.使用 Freemaker 作为邮件模板

1.首先引入 Freemaker 依赖
org.springframework.boot
spring-boot-starter-freemarker
2.创建 Freemaker 模板

在 resources/templates 目录下创建一个 mail.ftl 作为邮件发送模板:

    
Freemaker邮件模板

hello 欢迎加入 Spring Boot 大家族,您的入职信息如下:

姓名 ${username}
工号 ${num}
薪水 ${salary}
一起努力创造辉煌
3.进行测试
/**     *  使用 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();        }    }

效果图如下:

在这里插入图片描述

5.使用 Thymeleaf 作为邮件模板

1.首先引入 Thymeleaf 依赖
org.springframework.boot
spring-boot-starter-thymeleaf
2.创建 Thymeleaf 邮件模板

在 resources/templates 目录下创建一个 mail.html 作为邮件发送模板:

    
Thymeleaf邮件模板

hello 欢迎加入 Spring Boot 大家族,您的入职信息如下:

姓名
工号
薪水
一起努力创造辉煌
3.进行测试
/**     *  使用 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/

你可能感兴趣的文章
手机中嵌入默认的快速拨号号码
查看>>
Call Setting中的Line Switch功能作用
查看>>
GPS数据解析
查看>>
The top 6 programming languages for IoT projects
查看>>
67 open source tools and resources for IoT
查看>>
蓝牙低功耗(BLE)应用领域
查看>>
nRF51822低功耗睡眠函数应用
查看>>
Android 语言码_国家码
查看>>
从iphone和android应用来看公司
查看>>
android 修改代码怎样编译
查看>>
领导者如何增强说服力
查看>>
比金钱更好的十样东西
查看>>
凡事必定不少于三个以上的解决方法
查看>>
带团队的点滴心经
查看>>
五种力量让你如虎添翼
查看>>
你害怕创新吗
查看>>
创新服务的七要素
查看>>
虚伪的奉承也有效
查看>>
蒂姆·库克的五项核心领导力
查看>>
你为何没有成为领导者
查看>>