python异常处理try并发163邮件通知

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')

猜你喜欢

转载自blog.csdn.net/qq_32507417/article/details/107250473