内容发布更新时间 : 2024/12/27 13:56:44星期一 下面是文章的全部内容请认真阅读。
实验六 业务服务监控详解(二)
一、实验目的
本实验的主要目的是通过运用Python第三方系统基础模块,快速、有效地开发企业级服务监控平台,设计文件与目录差异对比方法、HTTP质量监控、邮件告警等内容。
二、实验内容
1、发送电子邮件模块smtplib 2、探测Web服务质量方法
三、实验工具
1、linux
2、python及相关的第三方基础模块
四、实验步骤
6.1、smtplib模块发送电子邮件 模块介绍
我们在监测系统状态发送警报信息,或者业务质量报表的时候,可以通过发送邮件来第一时间获取服务状态。SMTP是发送邮件的协议,POP是接收邮件的协议。Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,
email负责构造邮件,smtplib负责发送邮件。
所以我们可以使用smtplib模块来实现邮件收发功能,模拟一个smtp客户端。在Python2.3以上的版本中已经自带smtplib模块。
6.1.1模块的使用
常用类SMTP
SMTP类是smtp模块中最常用的类:有关于类的定义:
smtplib.SMTP(host[,port[,local_hostname[,,timeout]]]) # 可以完成登录、校验、发送、退出等 # host参数为远程smtp主机地址,比如stmp.163.com;port为连接端口,默认为25; # local_hostname的作用是在本地的FQDN(完整的域名)发送HELO/EHLO指令 # timeout为连接或尝试在多少秒超时。 在SMTP类中有如下方法:
(1)SMTP.connect([host[,port]]) # 连接远程smtp主机方法,host为远程主机地址,port为远程主机smtp端口,默认25,也可以直接使用host:port形式表示,例如:SMTP.connect(\。 (2)SMTP.login(user,password) # 远程smtp主机的校验方法,参数为用户名与密码,如SMTP.login(\。 (3)SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options]) # 实现邮件的发送功能,参数依次为发件人,收件人,邮件内容,例如:SMTP.sendmail(\on@163.com\其中body内容定义如下: \ To: demo@demomail.com Subject:test mail test mail body\ (4)SMTP.starttls([keyfile[,certfile]]) # 启用TLS(安全传输)模式,所有SMTP指令都讲加密传输,例如使用gmail的stmp服务器时需要启动此项才能正常发送邮件 (5)SMTP.quit() # 端口smtp服务器的连接 6.1.2邮件发送代码示例
以下为用是163邮箱向163邮箱发送邮件,SMTP默认端口25: 参考代码如下:
注意(1):
在Python2中,string 模块中有一个join()函数,用于以特定的分隔符分隔源变量中的字符串,将其作为新的元素加入到一个列表中;但是在Python3中,string模块中取消了join()函数,
join()函数作为一个全局函数被使用。
所以可以按照下面两个作为参考对变量BODY进行更改: Python2环境中
import string # 组装sendmail方法的邮件主体内容,各段以\进行分隔 BODY = string.join(( \: %s\ % FROM, \ % TO, \ % SUBJECT, \ text ),\) Python3环境中
import string # 组装sendmail方法的邮件主体内容,各段以\进行分隔 BODY = \(( \ % FROM, \ % TO, \ % SUBJECT, \, text )) 注意(2):
1、SMTP服务器需要身份验证。
2、如果是设置POP3和SMTP的SSL加密方式,则端口如下: 1)POP3接收邮件服务器(端口995);
2)SMTP发送邮件服务器(端口465或587)。
另外,用qq邮件服务器发送邮件需要先到邮箱里设开启SMTP/POP3服务。然后获取授权码, 在代码中要填写的密码是这个授权码, 而不是邮箱密码! 附:如何获取授权码? 1、登陆发送方邮箱 2、开启服务
将你的代码(带注释)放置于此:
# -*- coding:utf-8 -*-
# @Time:2017/12/11 8:20
# @File:mail1.py
# @by liuhailan