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统计列表中的重复项出现的次数的方法
Aug 18 Python
python在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
Python探索之修改Python搜索路径
Oct 25 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
Django对models里的objects的使用详解
Aug 17 Python
Python基于Socket实现简单聊天室
Feb 17 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
使用python把xmind转换成excel测试用例的实现代码
Oct 12 Python
python实现黄金分割法的示例代码
Apr 28 Python
浅谈Python数学建模之数据导入
Jun 23 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 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
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
FireFox JavaScript全局Event对象
2009/06/14 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
vue写一个组件
2018/04/09 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
pycharm设置注释颜色的方法
2018/05/23 Python
mac下如何将python2.7改为python3
2018/07/13 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
初级Java程序员面试题
2016/03/03 面试题
医药营销个人求职信范文
2014/02/07 职场文书
财务信息服务专业自荐书范文
2014/02/08 职场文书
小学毕业演讲稿
2014/04/25 职场文书
学校春季防火方案
2014/06/08 职场文书
招商引资工作汇报
2014/10/28 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
格列佛游记读书笔记
2015/06/30 职场文书