python发送带附件的邮件,代码带详细的注释说明,简单易懂。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Author: 张文兵
@Date: 2018-11-06 17:32:02
@LastEditors: 张文兵
@LastEditTime: 2018-11-06 18:14:56
@Blog: http://zhangwenbing.com/
@Description:
'''
import smtplib
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import base64
# 捕获异常
import traceback
import os.path as path
def sedmail(title, message, files):
try:
# 设置发件服务器地址
host = 'smtp.partner.outlook.cn'
# 设置发件服务器端口号。注意,这里有SSL和非SSL两种形式
port = 587
# 设置发件邮箱,一定要自己注册的邮箱
sender = 'xxx@xxx.com'
# 设置发件邮箱的密码,等会登陆会用到
pwd = 'xxxxxxxx'
# # 设置邮件接收人
receiver = 'xxx@xxx.com'
# 设置正文为符合邮件格式的HTML内容
# msg = MIMEText(body, 'html', 'UTF-8')
msg = MIMEMultipart()
# 设置邮件标题 解决邮件标题乱码问题
msg['subject'] = '=?UTF-8?B?' + base64.encodestring(title).strip(
'\n') + '?='
# 设置发送人
msg['from'] = sender
# 设置接收人
msg['to'] = receiver
# 解决邮件内容乱码问题
msg["Accept-Language"] = 'zh-CN'
msg["Accept-Charset"] = 'ISO-8859-1,UTF-8'
# ---这是文字部分---
part = MIMEText(message)
msg.attach(part)
# ---这是附件部分---
for file in files:
att = MIMEApplication(open(file, 'rb').read())
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition'] = 'attachment; filename= "' + path.basename(
file) + '"'
msg.attach(att)
# 注意!如果是使用SSL端口,这里就要改为SMTP_SSL
s = smtplib.SMTP(host, port)
s.ehlo()
s.starttls()
# 登陆邮箱
s.login(sender, pwd)
# 发送邮件!
s.sendmail(sender, receiver, msg.as_string())
s.quit()
except ():
exc_info = traceback.format_exc()
print exc_info
if __name__ == '__main__':
# pass
sedmail('测试邮件', '测试邮件', ['/test/test.zip'])
如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。
本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。