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 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
Python下singleton模式的实现方法
Jul 16 Python
python基础教程项目四之新闻聚合
Apr 02 Python
Python单元测试实例详解
May 25 Python
python实现按长宽比缩放图片
Jun 07 Python
selenium+python实现1688网站验证码图片的截取功能
Aug 14 Python
Python socket模块ftp传输文件过程解析
Nov 05 Python
Python 复平面绘图实例
Nov 21 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
python 爬取B站原视频的实例代码
Sep 09 Python
python3爬虫GIL修改多线程实例讲解
Nov 24 Python
利用python进行文件操作
Dec 04 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
mayfish 数据入库验证代码
2010/04/30 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
javascript 有用的脚本函数
2009/05/07 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
python中sys.argv参数用法实例分析
2015/05/20 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
详解Python循环作用域与闭包
2019/03/21 Python
Python 3 判断2个字典相同
2019/08/06 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
创业计划书中要认真思考的问题
2013/12/28 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
售房协议书
2014/08/19 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
暂停营业通知
2015/04/25 职场文书
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫