可以参考以下连接进行学习
python邮件发送学习参考连接
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from urllib.parse import quote #百分号编码
def create_attachment(path, filename):
"""
创建附件
:param path: 路径
:param filename: 文件名
:return:
"""
with open(f'{path}/{filename}', 'rb') as file:
attachment = MIMEText(file.read(), 'base64', 'utf-8')
# 指定内容类型
attachment['content-type'] = 'application/octet-stream'
# 将文件名处理成百分号编码
filename = quote(filename)
# 指定如何处置内容 如收件人收到附件后下载附件
attachment['content-disposition'] = f'attachment; filename="{filename}"'
return attachment
# 创建邮件主体对象
email = MIMEMultipart()
# 设置发件人、收件人和主体
email['From'] = Header('发件人名')
email['To'] = Header('收件人1名字;收件人2')
email['Subject'] = Header('什么***文件请查收', 'utf-8')#邮件名称
# 添加邮件正文内容
content = """内容例如:据德国媒体报道,当地时间9日,德国火车司机工会成员进行了投票,
定于当地时间10日起进行全国性罢工,货运交通方面的罢工已于当地时间10日19时开始。
此后,从11日凌晨2时到13日凌晨2时,德国全国范围内的客运和铁路基础设施将进行48小时的罢工。"""
email.attach(MIMEText(content, 'plain', 'utf-8'))
# 添加一个附件
email.attach(create_attachment('附件路径', '离职证明.docx'))
# 再添加一个附件
email.attach(create_attachment('附件路径', '离职证明模板.docx'))
# 创建SMTP_SSL对象(连接邮件服务器)
smtp_obj = smtplib.SMTP_SSL('smtp.qq.com', 465)
# 通过用户名和授权码进行登录
smtp_obj.login('用户名(邮箱)', '授权码如sdwakzgvxvvbhda')
# 发送邮件(发件人、收件人、邮件内容(字符串))
# 可以设置随机抽取发送多个好友
smtp_obj.sendmail(
'发件人邮箱',
['收件人1邮箱', '收件人2邮箱'],
email.as_string()
)