大家好~我是米洛

我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持。

欢迎关注我的公众号米洛的测开日记,获取最新文章教程!

回顾

上一节我们初步发送了测试邮件,由于定时任务的存在,导致我的邮箱还一直有收到每天测试计划的执行记录

测试平台系列(87) 搞个精美的邮件模板 - 图1

但它总归是一个半成品,只有空荡荡的文字信息,所以我们还是得适当对他美化一下。

成果展示

功夫不负有心人,忙碌了1个多小时的米师傅终于搞出了像样点的邮件报告:

测试平台系列(87) 搞个精美的邮件模板 - 图2

当然,这里只有样式哈,(因为数据我暂时是写死的)。

开始研究(卷王模式)

其实有时候我一直在想,如果没有antdelement-ui,那我写的东西该多么丑陋

这其实也说明了,本人前端功底真的是太不扎实了,也只有用这样的组件才能拯救自己了。

好了,认清现实以后,我不打算自己手撸css样式了。于是我开始找有没有啥好看的邮件模板,你别说,还真给我找到了。

测试平台系列(87) 搞个精美的邮件模板 - 图3

看了一下,是某鹅云的邮件模板,看起来还是很好看的。作者给出了对应的源码:

emmm,源码贴了以后效果不好,有需要的可以私信我。

想起来我还没解释为什么要手撸css,因为在邮件里,虽然支持你使用html作为正文,但是它有一些限制

  • 无法使用js
    所以点击事件我们用链接来完成
  • 只对行内样式能友好支持
    这2点就很让人难受了,所以我这边就打算借鉴他人的代码,在他们基础上修改

接下来干嘛

拿到这块代码以后,首先我想的是把它改成jinja2的模板代码,预置对应的话术,在需要动态展示的地方用{{变量}}进行替换。相信大家写过旧时代,前后端一体web系统的时候都用过template,也就对这种方式(模板引擎)很熟悉。

我们通过jinja2生成html,发送html邮件到对应的接收人就好了。

但html里面样式虽然正常,到了邮件又会怎么样呢?我们试试看

调整样式

测试平台系列(87) 搞个精美的邮件模板 - 图4

可以看到里面有很多变量,到时候都会通过jinja2传递进去。

然后我为了测试效果,先写死了数据:

测试平台系列(87) 搞个精美的邮件模板 - 图5

用yagmail测试

由于yagmail很易用,所以我们之前都是用它来发送邮件。那么它发html邮件效果会咋样呢?

测试平台系列(87) 搞个精美的邮件模板 - 图6

但这怎么能摧毁我的斗志呢?

于是我决定试试最原始的smtplib,说实话,现在不查资料我完全不会用的一个库:

测试平台系列(87) 搞个精美的邮件模板 - 图7

发现样式没问题,但要点击显示图片才能展示图片,这个显然在可以接受的范围,因为我看阿里云的图片也被屏蔽了。zzz

所以我们还是采用smtplib来发邮件吧~~~

最后附上粗略版的发邮件代码,备个份。

  1. import smtplib
  2. from email.mime.text import MIMEText
  3. from email.header import Header
  4. sender = 'xxx@126.com'
  5. password="客户端token"
  6. receivers = ['xxxx@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
  7. mail_msg = """html代码"""
  8. message = MIMEText(mail_msg, 'html', 'utf-8')
  9. message['From'] = 'wuranxu1993@126.com'
  10. message['To'] = Header("测试", 'utf-8')
  11. subject = 'Python SMTP 邮件测试'
  12. message['Subject'] = Header(subject, 'utf-8')
  13. try:
  14. smtp = smtplib.SMTP()
  15. smtp.connect('smtp.126.com')
  16. # 我们用set_debuglevel(1)就可以打印出和SMTP服务器交互的所有信息。
  17. # smtp.set_debuglevel(1)
  18. smtp.login(sender, password)
  19. smtp.sendmail(sender, receivers, message.as_string())
  20. except Exception as e:
  21. print(e)

下一节咱们直接完成邮件通知这块内容,敬请期待。