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中的装饰器、闭包和functools的教程
Apr 02 Python
谈谈如何手动释放Python的内存
Dec 17 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
Python实现的直接插入排序算法示例
Apr 29 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
python实现邮件自动发送
Aug 10 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
python中__slots__节约内存的具体做法
Jul 04 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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的输入输出流
2007/02/14 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
javascript函数库-集合框架
2007/04/27 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
js实现鼠标拖曳效果
2020/12/30 Javascript
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
单位在职证明范本
2014/01/09 职场文书
大学总结自我鉴定
2014/01/18 职场文书
护理不良事件检讨书
2014/02/06 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
2014年路政工作总结
2014/12/10 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
卖车协议书范文
2016/03/23 职场文书
Python序列化模块JSON与Pickle
2022/06/05 Python