python实现自动发送报警监控邮件
本文实例为大家分享了python自动发送报警监控邮件的具体代码,供大家参考,具体内容如下
因为有一些日常任务需要每日检查日否执行正确,所以需要一个报警监控的机制,这个需要你指定你发送的邮箱和你接收的邮箱,就可以使用了。
这四个需要填写一下,我们使用的qq企业邮箱所以host为smtp.exmail.qq.com
mail_host=""
mail_user=""
mail_pass=""
mail_postfix=""
使用如下,也可以增加附件使用。
pythonsend_email.pyxxxxxxx@qq.com,xxxxxx@qq.comtest数据/home/data/test/sendfile
python代码:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
importsmtplib
importsys
fromemail.mime.textimportMIMEText
importlinecache
importemail
importos
#############
#emailsendlist
#mailto_list=[""]
#####################
#setemailservicehost,user,password,postfix
mail_host=""
mail_user=""
mail_pass=""
mail_postfix=""
######################
deftransfer_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)
defsend_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()
returnTrue
exceptException,e:
print"error:",str(e)
returnFalse
defsend_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)
fortmp_attachment_file_nameinattachment_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()
returnTrue
exceptException,e:
print"error:",str(e)
returnFalse
defprint_usage():
print"Usage:"
print"%semail_send_list(xxx@163.com,xxx@qq.com,...)subjectcontent_file_name"%(sys.argv[0])
print"%semail_send_list(xxx@163.com,xxx@qq.com,...)subjectcontent_file_nameattachment_file_name(file_name1,file_name2,...)if_transform_attachment_to_gb2312(yesornot)"%(sys.argv[0])
######Startfromhere#########
if__name__=='__main__':
reload(sys)
sys.setdefaultencoding('utf8')
iflen(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()
ifsend_mail_with_attachment(send_list,subject,content_file_name,attachment_file_name):
print"Sendemailsuccess!"
else:
print"Sendemailfail!"
sys.exit(1)
eliflen(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")
ifsend_mail(send_list,subject,content_file_name):
print"Sendemailsuccess!"
else:
print"Sendemailfail!"
sys.exit(1)
else:
print_usage()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。