python实现自动发送报警监控邮件


Posted in Python onJune 21, 2018

本文实例为大家分享了python自动发送报警监控邮件 的具体代码,供大家参考,具体内容如下

因为有一些日常任务需要每日检查日否执行正确,所以需要一个报警监控的机制,这个需要你指定你发送的邮箱和你接收的邮箱,就可以使用了。

这四个需要填写一下,我们使用的qq企业邮箱所以host为smtp.exmail.qq.com

mail_host="" 
mail_user="" 
mail_pass="" 
mail_postfix="" 

使用如下,也可以增加附件使用。

python send_email.py xxxxxxx@qq.com,xxxxxx@qq.com test数据 /home/data/test/sendfile

python代码:

#!/usr/bin/env python 
# -*- coding: utf-8 -*-  
import smtplib 
import sys 
from email.mime.text import MIMEText 
import linecache 
import email 
import os 
 
############# 
# email send list 
#mailto_list=[""] 
##################### 
# set email service host,user,pass word,postfix 
mail_host="" 
mail_user="" 
mail_pass="" 
mail_postfix="" 
###################### 
 
def transfer_utf8_to_gb2312(file_name): 
  f=open(file_name) 
  s=f.read() 
  f.close() 
  u=s.decode("utf-8") 
  s=u.encode("gb2312") 
  f=open(file_name,"w"); 
  f.write(s) 
 
 
def send_mail(to_list,sub,content_file_name): 
  me=mail_user+"<"+mail_user+"@"+mail_postfix+">" 
  msg = email.MIMEMultipart.MIMEMultipart()  
  content = open(content_file_name.encode("utf-8"), 'rb') 
  content_msg = MIMEText(content.read(),"plain","utf-8") 
  msg.attach(content_msg)  
  msg['Subject'] = sub 
  msg['From'] = me 
  msg['To'] = ";".join(to_list) 
  try: 
    s = smtplib.SMTP() 
    s.connect(mail_host) 
    s.login(mail_user+"@"+mail_postfix,mail_pass) 
    s.sendmail(me, to_list, msg.as_string()) 
    s.close() 
    return True 
  except Exception, e: 
    print "error:",str(e) 
    return False 
 
def send_mail_with_attachment(to_list,sub,content_file_name,attachment_file_name): 
  me=mail_user+"<"+mail_user+"@"+mail_postfix+">" 
  msg = email.MIMEMultipart.MIMEMultipart()  
  content = open(content_file_name.encode("utf-8"), 'rb') 
  content_msg = MIMEText(content.read(),"plain","utf-8") 
  msg.attach(content_msg)  
  for tmp_attachment_file_name in attachment_file_name.split(","): 
    contype = 'application/octet-stream' 
    maintype, subtype = contype.split('/', 1) 
    file_data = open(tmp_attachment_file_name.encode("utf-8"), 'rb') 
    file_msg = email.MIMEBase.MIMEBase(maintype, subtype) 
    file_msg.set_payload(file_data.read()) 
    file_data.close( ) 
    email.Encoders.encode_base64(file_msg) 
    basename = os.path.basename(tmp_attachment_file_name) 
    file_msg.add_header('Content-Disposition', 'attachment', filename = basename.encode("utf-8")) 
    msg.attach(file_msg) 
  msg['Subject'] = sub 
  msg['From'] = me 
  msg['To'] = ";".join(to_list) 
  try: 
    s = smtplib.SMTP() 
    s.connect(mail_host) 
    s.login(mail_user+"@"+mail_postfix,mail_pass) 
    s.sendmail(me, to_list, msg.as_string()) 
    s.close() 
    return True 
  except Exception, e: 
    print "error:",str(e) 
    return False 
 
def print_usage(): 
    print "Usage:  " 
    print "   %s email_send_list(xxx@163.com,xxx@qq.com,...) subject content_file_name" % (sys.argv[0]) 
    print "   %s email_send_list(xxx@163.com,xxx@qq.com,...) subject content_file_name attachment_file_name(file_name1,file_name2,...) if_transform_attachment_to_gb2312(yes or not)" % (sys.argv[0]) 
 
######Start from here######### 
if __name__ == '__main__': 
  reload(sys) 
  sys.setdefaultencoding('utf8') 
  if len(sys.argv) == 6: 
    send_list = sys.argv[1].split(",") 
    subject = unicode(sys.argv[2],"utf-8") 
    content_file_name = unicode(sys.argv[3],"utf-8") 
    attachment_file_name = unicode(sys.argv[4],"utf-8") 
    if(sys.argv[5] == "yes"): 
      transfer_utf8_to_gb2312(attachment_file_name.decode("utf-8")) 
    elif(sys.argv[5] == "not"): 
      pass  
    else: 
      print_usage()  
 
    if send_mail_with_attachment(send_list,subject,content_file_name,attachment_file_name): 
      print "Send email success!" 
    else: 
      print "Send email fail!" 
      sys.exit(1) 
  elif len(sys.argv) == 4: 
    send_list = sys.argv[1].split(",") 
    subject = unicode(sys.argv[2],"utf-8") 
    content_file_name = unicode(sys.argv[3],"utf-8") 
 
    if send_mail(send_list,subject,content_file_name): 
      print "Send email success!" 
    else: 
      print "Send email fail!" 
      sys.exit(1) 
  else: 
    print_usage()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python设计模式之观察者模式实例
Apr 26 Python
Python开发的单词频率统计工具wordsworth使用方法
Jun 25 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
Python对列表的操作知识点详解
Aug 20 Python
python 数据提取及拆分的实现代码
Aug 26 Python
python 列表推导式使用详解
Aug 29 Python
Python模块_PyLibTiff读取tif文件的实例
Jan 13 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
如何利用python web框架做文件流下载的实现示例
Jun 02 Python
scrapy结合selenium解析动态页面的实现
Sep 28 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
Python中list查询及所需时间计算操作示例
Jun 21 #Python
python监控文件并且发送告警邮件
Jun 21 #Python
python3实现磁盘空间监控
Jun 21 #Python
Python实现的远程登录windows系统功能示例
Jun 21 #Python
python3监控CentOS磁盘空间脚本
Jun 21 #Python
python实现猜单词小游戏
May 22 #Python
python2.x实现人民币转大写人民币
Jun 20 #Python
You might like
社区(php&amp;&amp;mysql)五
2006/10/09 PHP
global.php
2006/12/09 PHP
JS实现php的伪分页
2008/05/25 PHP
php中经典方法实现判断多维数组是否为空
2011/10/23 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
php显示页码分页类的封装
2017/06/08 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
jquery中动态效果小结
2010/12/16 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
python生成器与迭代器详解
2019/01/01 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
Python中无限循环需要什么条件
2020/05/27 Python
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
公司新年寄语
2014/04/04 职场文书
青奥会口号
2014/06/12 职场文书
2014年政协工作总结
2014/12/09 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
导游词之江西赣州
2019/10/15 职场文书