利用Python的email模块发带附件的邮件
Reading Time:The full text has 396 words, estimated reading time: 2 minutes
Creation Date:2017-03-29
Previous Article:建立Python的虚拟运行环境
Next Article:从博客园和有道云笔记迁移内容到本博客
BEGIN
- 小A: 请问如何不用软件向多个人发送邮件?
- 小B: 你是想群发邮件发广告吗?
- 小A: 不不不,只是用来监控项目的异常并及时告知。
- 小B: 哦,这个简单。
还在手动方式发邮件吗?你out了
想必做python项目开发的肯定遇到过类似问题,程序崩溃,服务终止,自己却不知道,导致用户骂声连连。其实这些都可以通过python配置邮件提醒。不过如果你是用阿里云服务器部署的,那也可用用阿里云自带的log监控,更方便更快捷。下面是python发送邮件的代码
#引入依赖的模块
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
message = MIMEMultipart() #创建带附件的email实例
mailto_list=['xxx@qq.com', 'xxx@qq.com'] #目标邮箱地址
mail_host="smtp.163.com" #设置服务器
mail_user="xxx@163.com" #用户名
mail_pass="xxx" #口令
mail_postfix="163.com" #发件箱的后缀
message['To'] = ",".join(mailto_list) #收件邮箱地址
message['From'] = '来自xx安全中心' #发件人详情
message['Subject'] = '给老师的一封信' #主题
message.attach(MIMEText('尊敬的xxx:', 'html', 'utf-8')) #正文内容
# 构造附件,传送当前目录下的 test.txt 文件
file = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
file["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
file["Content-Disposition"] = 'attachment; filename="test.txt"'
message.attach(file)
try:
s = smtplib.SMTP() #创建邮件发送实例
s.connect(mail_host) #连接smtp服务器
s.login(mail_user,mail_pass) #登陆服务器
me = "<"+mail_user+"@"+mail_postfix+">"
s.sendmail(me, mailto_list, message.as_string()) #发送邮件
print "邮件发送成功"
except smtplib.SMTPException, e:
print "Error: 无法发送邮件", e
FINISH
Previous Article:建立Python的虚拟运行环境
Next Article:从博客园和有道云笔记迁移内容到本博客