本文部分内容转自 https://www.cnblogs.com/lystbc/p/7517953.html 感谢~
from email.header import Header
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from smtplib import SMTP_SSL
import time
email_sender=''#这里是发件邮箱
email_pwd=''#这里是授权码,可在邮箱中进行设置,区别于登录密码
email_receiver='xxx@126.com'
email_sever=SMTP_SSL('smtp.126.com')#连接126邮箱服务器
email_sever.login(email_sender,email_pwd)#登录邮箱
email_text=MIMEText('正文内容','plain','utf-8')#邮件的内容,和内容的格式。这里是txt/plain,纯文本类型。
email_liction=MIMEMultipart()#创建一个带附件的事例
email_liction['Subject']=Header('title','utf-8')#标题的内容和编码格式
email_liction['From']=email_sender
email_liction['To']=email_receiver
email_liction['Date']=time.ctime()
email_file=MIMEApplication(open('/home/mysys/aaa.txt', 'rb').read())#第一个参数打开文件read()方法读出所有内容,刚好是字符串格式,第二个参数是希望的编码,这种方法比较简单。其中,linux目录/,windows目录\\ 还可以扩展input之类的来选择附件等。
email_file.add_header('Content-Disposition', 'attachment', filename='temp.html')#这里添加一个标题,Content-Disposition,attachment说明是一个附件,filename说明文件名.mail里有一个get_filename()的方法可以得到附件里的文件名。
#filename不能随便命名,因为后缀名会影响到文本的格式。例如把"html"换成"txt",最后加载到邮件的附件就是‘temp.txt’。
email_liction.attach(email_text)#把我们刚才写的邮件内容加进去
email_liction.attach(email_file)#现在我们把编码好的附件也加进去
email_sever.sendmail(email_sender,email_receiver,email_liction.as_string())#由于senemail要传String类型,所以要用.as_string()把内容组合成字符串
email_sever.quit()