python异常处理并发邮件通知
python 异常处理
使用
try:
print('try...')
r = 10 / 0
print('result:%s' % r)
except ZeroDivisionError as e:
print('error happened:',e)
raise e
finally:
print('done')
print('ok')
将可能发生的异常放到try里面然后做相应的处理即可。
其中raise e
,是在当前把error报出来,会写出详细信息, track到具体某一行。
用163邮箱发邮件
需要注意的是163邮箱需要开启smtp服务
如何开启163邮箱的SMTP服务
开启后会有个客户端授权密码,即为代码中的user_passwd
import smtplib
from email import encoders
from email.utils import formatdate
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import *
user_name = "[email protected]"
user_passwd = "smtp_passwd"
smtp_server = "smtp.163.com"
subject = "Project error info"
def send_email(from_user, to_user_list, subject, body):
to_user = ",".join(to_user_list)
#email info
msg = MIMEText(body,'plain','utf-8')
# msg = MIMEMultipart('mixed')
msg['From'] = from_user
msg['To'] = to_user
msg['Subject'] = subject
msg['Date'] = formatdate(localtime = True)
#connect stmp and send email
smtp = smtplib.SMTP()
smtp.connect(smtp_server)
smtp.login(user_name, user_passwd)
smtp.sendmail(from_user, to_user, msg.as_string())
smtp.quit()
print('send over')
return
捕获异常并发送邮件
try:
print('try...')
r = 10 / 0
print('result:%s' % r)
except ZeroDivisionError as e:
print('error happened:',e)
send_email(str(e))
raise e
finally:
print('done')
print('ok')