发送邮件(用代码模拟邮箱服务器发送邮件)
1.导入模块和包,分别是邮件发送服务器模块、邮件对象模块、邮件标题包、邮件内容包
import smtplib # 邮件发送服务器 from email.mime.multipart import MIMEMultipart # 创建一个邮件对象 from email.header import Header # 邮件标题包 from email.mime.text import MIMEText # 邮件内容包
2.用函数封装功能:发邮件
包含:发送人、接收人、主题、内容、附件
3.添加附件时注意:
a. 将附件转成base64编码格式
b.对附件的中文件名进行gbk编码
代码如下:
# 添加邮件附件
email.attach(content)
if files:
for file in files:
with open(file, rb) as f:
file_name = file.rfind(/)
display_filename = file[file_name + 1:] if file_name != -1 else file
# 将附件转成base64编码格式
att = MIMEText(f.read(), base64, utf-8)
# 设置附件类型 通知服务器这是附件
att["Content-Type"] = application/octet-stream
# 设置附件的文件名称,告诉服务器附件的文件名称 并显示在邮件中,并对附件的中中文件名gbk编码
att.add_header(Content-Disposition, attachment,
filename=(gbk, , os.path.basename(display_filename)))
# 将附件附加到 邮件对象
email.attach(att)
