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


    大家好~我是米洛

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

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

    回顾

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

    image.png

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

    成果展示

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

    怎么样,效果还凑合吧

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

    开始研究(卷王模式)

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

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

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

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

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

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

    • 无法使用js

      所以点击事件我们用链接来完成

    • 只对行内样式能友好支持

      这2点就很让人难受了,所以我这边就打算借鉴他人的代码,在他们基础上修改

    接下来干嘛

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

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

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

    调整样式

    到这个地步就差不多了

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

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

    用yagmail测试

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

    这是真实的效果,可以看到,惨不忍睹

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

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

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

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

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

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

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

  • 相关阅读:
    D触发器的使用小结
    CAN通信帧ID的含义解析? (转载)
    mcp2515屏蔽寄存器和过滤寄存器的学习
    spi调试步骤,mcp2515调试整理
    最近工作小结2019.11.24
    Can总线上的电平及物理层仲裁
    can总线学习网上资料汇总
    can总线的远程帧(遥控帧)—说的很形象
    在IAR平台建立STC8ASK64S4A12单片机工程
    cortex-m系列的区别(图解)及今日碎片学习笔记
  • 原文地址:https://www.cnblogs.com/we8fans/p/15767509.html
Copyright © 2020-2023  润新知