这是我参与11月更文应战的第23天,活动概况查看:2021终究一次更文应战
咱们好~我是
米洛
!
我正在从0到1打造一个开源的接口测验平台, 也在编写一套与之对应的完整教程
,期望咱们多多支持。
欢迎关注我的公众号米洛的测开日记
,获取最新文章教程!
回忆
上一节咱们使用redis,做了一个缓存器
。但其实它是存在必定的问题的,接着我会讲。
下面咱们就完成一发最简单的邮件告诉功用。
成果展现
请求邮箱
我的邮箱很名贵,咱们别用。可以请求126或者163的邮箱,然后开启POP3/SMTP协议即可。
一般在邮箱->设置里边,看到POP3/SMTP点进去会有指引。
由于直接用暗码是不可以的。
编写Notification告诉类
这个告诉类其实是个虚伪的类,也是个抽象类
。由于告诉的方式有很多种,包括邮件、短信、钉钉、企业微信、飞书等等。所以咱们就给他一个空壳,而到具体的邮件啥的时候再完成具体的办法
。
统一承受subject(主题/标题),content(内容),attachment(附件,邮件用的多),接收人。
编写通过userId批量获取邮箱的办法
由于咱们在测验方案的receiver字段里边存储的都是用户id
,所以咱们需求来次转换:
有没有发现一个问题,当这个user不固定(测验方案的接收人肯定不会一直固定),如果咱们给他套上cache的办法,也就是要给他一个死key,那么其他测验方案履行
的时候,就会取到死key的数据,这就不合理了!!!
所以咱们之前编写的cache针对固定参数的好使,这种可变参数(参数变了,成果也变了)的就不好使了,由于你的key要跟着它走。
这就是我上面说到的缺陷
编写Email类
import yagmail
from app.core.configuration import SystemConfiguration
from app.core.msg.notification import Notification
class Email(Notification):
@staticmethod
def get_mail_client():
configuration = SystemConfiguration.get_config()
data = configuration.get("email")
return yagmail.SMTP(user=data.get("sender"), password=data.get("password"), host=data.get("host"))
@staticmethod
def send_msg(subject, content, attachment=None, *receiver):
client = Email.get_mail_client()
client.send(receiver, subject=subject, contents=content, attachments=attachment)
先从装备里边拿到数据,接着调用yagmail
库,获取mail客户端,终究根据传入的主题、邮件内容等信息发送邮件。
补全测验方案告诉部分
先获取音讯类型,如果有邮件类型,咱们就获取用户邮箱。然后调用send_msg办法。
但这边有个很严重的问题,咱们只能拿到测验方案
的信息,没有拿到测验报告的具体数据。
这样报告连对错都不知道,咱们先写死一个标题
和内容。
接着运行测验方案,终究效果就如同文章开头咯。于是我赶忙删掉了这个该死的测验方案。
所以后边咱们还是得好好完善邮件的内容呀
,这块内容工作量比较大,咱们可能不会做到完善,能放一个测验成果+测验报告链接可能是咱们需求注意的方向。
至于下一节讲什么,我有点肝不动了。后边再说吧~