1. smtplib 和email介绍
smtplib是一个 Python 库,用于使用简单邮件传输协议(SMTP)发送电子邮件。
smtplib是内置模块; 我们不需要安装它。 它抽象了 SMTP 的所有复杂性。
email也是一个内置模块。一般我们使用他的
功能:通过邮件服务器向管理员发送程序运行的告警信息。
2.源代码实例
# 定义一个函数,当系统出现问题时,向管理员发送邮件。
def send_waring_mail(error_msg, title):
# 创建邮箱连接,采用匿名发送邮件的方法,不需要使用登录名和密码,发送邮箱的名称可以自定义,不需要exchange服务器创建。
smtp = smtplib.SMTP()
try:
# 尝试连接exchange邮箱服务器,因为我们的邮箱服务器允许匿名发送,所以不需要用户名和密码,公网服务器都是需要密码认证的。
smtp.connect('192.168.2.10', 587)
except Exception as e:
logging.critical('邮件服务器连接失败,请检查邮箱服务器和网络!')
logging.critical(e)
return
# 构建msg信息,这个信息是邮件的主体部分,将外部传入的error_msg和title信息通过字符串的format方法构造进邮件主体模块。
mail_msg = """
管理员您好:
跟踪系统出现问题,问题消息如下:
{error}
请检查。<br/>
对应excel跟踪文件为:{title}
""".format(error=error_msg, title=title)
# 生产msg编码,邮件的格式,以及编码方法,这个是邮件内容
msg = MIMEText(mail_msg, 'html', 'utf-8')
msg['Subject'] = "DOM Tracing ERROR message" # 邮件的主题,就是标题
msg['From'] = 'CQ_DOM_OIL@dhcp.com' # from是邮件发送方,就是发件人
try:
# sendmail函数有包括发件人,收件人,以及信息流。收件人可以是列表
smtp.sendmail('CQ_OIL@dhcp.com', 'gang.zhou@dhcp.com', msg.as_string())
logging.info("向管理员发送警告邮件成功。")
except Exception as e:
logging.warning("向管理员发送邮件失败,请检查其邮箱配置!")
logging.warning(e)