在写爬虫或监控工具时,经常要用到邮件自动通知或告警。通过配置 smtp 和 python 脚本就可以很简单的实现这一功能。
SMTP 是发送邮件的协议,Python 内置对 SMTP 的支持,可以发送纯文本邮件、HTML 邮件以及带附件的邮件。
通过一个简单的实例介绍下通过 python+smtp 发送邮件的步骤
提前准备
需要两个邮箱,一个是发件箱,如 111111@163.com;一个是收件箱,如 222222@qq.com
一般需要长期稳定的运行,建议部署在 vps 上,推荐阅读
vps 上部署 python 环境。我用的系统是 ubuntu14.04,自带 python 2.7.
配置发件箱的 smtp 协议
登录 111111@163.com 邮箱,在设置->POP3/SMTP/IMAP 中,选择客户端授权密码,生成一个密码,这个密码是我们必须记住的,在脚本中会使用到。(我这里是已经生成过密码了)
实现 python 发送邮件脚本
脚本如下,需要根据自己的实际情况替换下面的发件箱、收件箱、smtp 等
#!/usr/bin/python # coding:utf-8 import sys reload(sys) sys.setdefaultencoding('utf-8') import time import smtplib from email.mime.text import MIMEText class email_sender_calss(): def send_email(self): sender = '111111@163.com' receiver = '222222@qq.com' smtpserver = 'smtp.163.com' username = '111111@163.com' password = 'password' subject = '我发送的邮件主题' str_html = '我发送的邮件内容' msg = MIMEText(str_html, 'html', 'utf-8') msg['Subject'] = subject msg['from'] = '111111@163.com' msg['to'] = '222222@qq.com' smtp = smtplib.SMTP(smtpserver) smtp.esmtp_features["auth"] = "PLAIN" (code, resp) = smtp.login(username, password) if 0: print("fail") else: print("success") result = smtp.sendmail(sender, receiver, msg.as_string()) print result smtp.quit() pass app = email_sender_calss() app.send_email()
效果如下
注 :技术交流,获取 VPS 最新补货通知、折扣活动请加 QQ 群:283468775