黑马程序员技术交流社区

标题: 【深圳校区】走进Java接口测试之使用JavaMailSender发送邮件 [打印本页]

作者: 柠檬leung不酸    时间: 2018-12-26 09:53
标题: 【深圳校区】走进Java接口测试之使用JavaMailSender发送邮件
引言
一般我们在做接口自动化时,都会通过钉钉或者邮件的方式通知测试结果信息。而且基本上邮件的内容都是测试报告。所以,今天就来讲讲如何利用 pring提供的 JavaMailSender接口,实现邮件发送功能。
背景
讲解前,我们先来简单了解下相关邮件知识。最早期的时候我们会使用 JavaMail相关 api来写发送邮件的相关代码,后来spring推出了 JavaMailSender更加简化了邮件发送的过程,在之后 springboot对此进行了封装就有了现在的 spring-boot-starter-mail,本文的介绍主要来自于此包。
JavaMail介绍
JavaMail是由 Sun定义的一套收发电子邮件的 API,不同的厂商可以提供自己的实现类。但它并没有包含在 JDK中,而是作为 JavaEE的一部分。而 JavaMailSender底层也是基于 JavaMailjar包的。
邮件通信协议
这三种协议都有对应 SSL加密传输的协议,分别是 SMTPS, POP3S和 IMAPS。除 JavaMail服务提供程序之外, JavaMail还需要 JAF( JavaBeansActivationFramework)来处理不是纯文本的邮件内容,这包括 MIME(多用途互联网邮件扩展)、 URL页面和文件附件等内容
JavaMail关键对象

Spring封装后,使用起来基本上都不需要去关心这些对象值了,简单了解下即可。有兴趣,可以去官网查看:https://java.net/projects/javamail/pages/Home
SpringBoot集成pom包配置
pom包里面添加包引用


邮箱配置
在 application.yml中添加邮箱配置


发送纯文本格式编写mailService接口并实现
编写test类进行测试


查看收件箱

本发送就完成了。
发送html邮件
但是在正常接口测试的过程中,我们通常在邮件中加入附件完整HTML测试报告来通知测试结果,下面讲介绍如何使用 springboot来发送 html报告的邮件。
发送html格式邮件
其它都不变在 MailService添加 sendHtmlMail方法

编写test类进行测试
查看收件箱

发送带附件的邮件
在 MailService添加 sendAttachmentsMail方法


添加多个附件可以使用多条 helper.addAttachment(fileName,file)
编写test类进行测试
查看收件箱

发送带静态资源的邮件
邮件中的静态资源一般就是指图片,在 MailService添加 sendAttachmentsMail方法

测试类中添加test方法
查看收件箱

添加多个图片可以使用多条 <imgsrc='cid:" + rscId + "'> 和 helper.addInline(rscId,res) 来实现
发送模板邮件

我们希望收到这样的ExtentReports邮件
其中只有邮件这个报告内容在变化,其它邮件内容均不变,因此对于这类邮件需求,都建议做成邮件模板来处理。模板的本质很简单,就是在模板中替换变化的参数,转换为html字符串即可,这里以 thymeleaf为例来演示。
把emailable-report.html放到在 resorces/templates下(正式测试需要修改其生成目录)

解析 Html报告并发送
查看收件箱

发送失败
因为各种原因,总会有邮件发送失败的情况,比如:邮件发送过于频繁、网络异常等。在出现这种情况的时候,我们一般会考虑重新重试发送邮件,会分为以下几个步骤来实现:
本文代码:
https://github.com/7DGroup/Java-API-Test-Examples


转自 https://www.testwo.com/article/1415
文章仅作为分享






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2