5.使用Python发送邮件

上节讲了如何利用Python连接Oracle数据库并执行语句

其中讲到了利用查看表空间的使用率,这时我们就可以利用Python监控这个数值,等超过阈值后发送邮件通知我们

这节就讲述如何利用Python的email模块发送邮件

注意该模块是自带的,无需安装

环境设置

Linux系统为 Centos 6.8

Python环境为 Python 3.6

使用Python发送邮件

我们新建一个文件,命名为sendmail.py,内容如下

路径为:/home/oracle/script/sendmail.py

#!/usr/bin/python
#coding=utf-8
import smtplib
import os
import time
from email.mime.text import MIMEText
to_list=["<ezio_shi@aseglobal.com>"]
#to_list=["<1391111111@139.com>"]
mail_host="10.65.1.134"  #设置服务器
mail_user="ezio_shi"    #用户名
mail_postfix="aseglobal.com"  #发件箱的后缀
def send_mail(to_list,sub,content):  #to_list:收件人;sub:主题;content:邮件内容
    me="<"+mail_user+"@"+mail_postfix+">"   #这里的hello可以任意设置,收到信后,将按照设置显示
    msg = MIMEText(content)    #创建一个实例,这里设置为html格式邮件
    msg['Subject'] = sub    #设置主题
    msg['From'] = me
    msg['To'] = ";".join(to_list)
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)  #连接smtp服务器
        #s.set_debuglevel(1)
        s.helo()
        #s.starttls()
        #s.login(mail_user,mail_pass)  #登陆服务器,一般公司内部无需认证
        s.sendmail(me, to_list, msg.as_string())  #发送邮件
        s.close()
        return True
    except Exception as  e:
        print (str(e))
        return False
if __name__ == '__main__':
    #多个收件人请用逗号隔开
    content='这里是发送的内容'
    sub='这里是邮件的标题'
    s=send_mail(to_list,sub,content)
    print (s)

注意此代码适用于公司内部有SMTP服务器的情况

运行结果

当返回值为True时说明发送成功

[oracle@asensvr-monitor script]$ python sendmail.py 
True

同时会收到以下邮件

Alt text

可以看到发送成功

源码位置

https://github.com/bsbforever/wechat_oms

至此使用Python发送邮件已经讲完,下节讲述如何自动化监控Oracle表空间使用率