实验介绍
在本节以及后续内容会大量用到邮件服务,为避免重复写邮件发送代码,本节实验将先编写一个基于Django框架编写的调用邮件的接口,需发送邮件时直接调用这个接口即可。之后再获取最近处于故障状态仍未解决的触发器信息,然后发送邮件通知用户。
知识点
- 基于Django框架编写邮件发送接口
- pandas模块介绍
- 获取最近处于故障状态仍未解决的触发器信息【zabbix监控系统dashboard 上的显示信息】
- 编写html文件,定时上报问题主机
基于Django框架编写邮件发送接口
环境安装配置
关于Django框架的学习,可参考Django 官网,本实验中因篇幅问题只做简单介绍。
环境安装采用虚拟环境,参考实验二《配置python的虚拟环境》,虚拟环境创建好后,安装Django,方式如下:
(test) root@074dfb2b3e3c:~# pip install -r requirements.txt
安装完成后,便可以使用Django的管理工具django-admin
,首先创建一个名为zaopermail的项目:
(test) root@074dfb2b3e3c:~/script/code5# django-admin startproject zaopermail
# 查看目录结构:
(test) root@074dfb2b3e3c:~/script/code5# tree zaopermail/
zaopermail/
├── manage.py
└── zaopermail
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
1 directory, 5 files
接口路由配置
首先配置路由,再zaopermail/urls.py
配置:
urlpatterns = [
path('mail/', views.ZaMail.as_view()),
]
再创建文件zaopermail/views.py
,内容为调用这个接口的处理逻辑,具体内容如下:
from django.http import HttpResponse
from django.views.generic import View
from libs import mailclient
import json
class ZaMail(View):
def post(self, request):
requestbody = json.loads(request.body)
if 'to_receiver' in requestbody.keys():
to_receiver = requestbody['to_receiver']
else:
to_receiver = None
if 'cc_receiver' in requestbody.keys():
cc_receiver = requestbody['cc_receiver']
else:
cc_receiver = None
if 'subject' in requestbody.keys():
subject = requestbody['subject']
else:
subject = None
if 'mailbody' in requestbody.keys():
mailbody = requestbody['mailbody']
else:
mailbody = None
if 'attach_images' in requestbody.keys():
attach_images = requestbody['attach_images']
else:
attach_images = None
result = mailclient.sendmail(to_receiver, subject, mailbody, cc_receiver, attach_images)
return HttpResponse(result)
发送邮件核心代码介绍
编写调用邮件接口的客户端代码,考虑可扩展性,代码中包含了邮件中添加图片的代码逻辑,邮件中配置了SMTP的SSL认证,使用时可根据实际情况判断是否