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查看列的唯一值方法
Jul 17 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
python爱心表白 每天都是浪漫七夕!
Aug 18 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
python实现图片筛选程序
Oct 24 Python
python最小生成树kruskal与prim算法详解
Jan 17 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
Python如何定义接口和抽象类
Jul 28 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
降低python版本的操作方法
Sep 11 Python
Python eval函数原理及用法解析
Nov 14 Python
如何使用Python对NetCDF数据做空间相关分析
Apr 21 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
一个简洁的多级别论坛
2006/10/09 PHP
PHP 5.3.0 安装分析心得
2009/08/07 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
PHP微信分享开发详解
2017/01/14 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
Django操作session 的方法
2020/03/09 Python
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
新领导上任欢迎词
2014/01/13 职场文书
美术教师岗位职责
2014/03/18 职场文书
村党支部换届选举方案
2014/05/02 职场文书
超市客服工作职责
2014/06/11 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
Anaconda安装pytorch及配置PyCharm 2021环境
2021/06/04 Python