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 相关文章推荐
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
解决python opencv无法显示图片的问题
Oct 28 Python
Python实现多进程的四种方式
Feb 22 Python
python绘制地震散点图
Jun 18 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
Django import export实现数据库导入导出方式
Apr 03 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
Python中常用的os操作汇总
Nov 05 Python
Python可以用来做什么
Nov 23 Python
python常量折叠基础知识点讲解
Feb 28 Python
新手必备Python开发环境搭建教程
May 28 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 insert语法详解
2008/06/07 PHP
php Memcache 中实现消息队列
2009/11/24 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
nodejs读取memcache示例分享
2014/01/02 NodeJs
Js实现自定义右键行为
2015/03/26 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
python机器学习之随机森林(七)
2018/03/26 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
python程序变成软件的实操方法
2019/06/24 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
人事专员职责
2014/02/22 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
学校国庆节活动总结
2015/03/23 职场文书
感恩主题班会教案
2015/08/12 职场文书
初中思想品德教学反思
2016/02/24 职场文书
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python