python发送带附件的邮件需要使用的库:smtp,MIMEText,MIMEMultipart,MIMEImage
如何使用见代码详述(注意:from,to为python的关键字,不能用作变量。但python区分大小写,下述代码中单次中使用了大写,能作为变量使用):
#coding:utf-8
import smtplib
#发送字符串的邮件
from email.mime.text import MIMEText
#处理多种形态的邮件主体需要使用MIMEMultipart类,如创建附件
from email.mime.multipart import MIMEMultipart
#处理图片需要 MIMEImage 类
from email.mime.image import MIMEImage
#设置服务器所需信息
mailServer = 'mail.qq.com' #公司服务器邮箱地址'
FROM = "**@qq.com" #发件人
#邮件接受方邮箱地址,可传递多个地址以逗号进行分开
TO = '"test1@qq.com","test2@qq.com"'
subject = "主题:测试邮件主题"
send_message = "你好,\n\t这是一次邮件测试,该段为测试内容."
#创建一封空邮件
message = MIMEMultipart('related')
def emailSend(From, To, Subject, Message):
#发送信息内容
msg = MIMEText(send_message,'plain', _charset='utf-8')
Message.attach(msg)
#发送图片-预览信息
image_data = open("imageTest.jpg",'rb')
message_image = MIMEImage(image_data.read())
image_data.close()
message_image.add_header('Content-ID','small')
Message.attach(message_image)
#发送图片-附件
message_image = MIMEText(open("imageTest.jpg",'rb').read(),'base64','utf-8')
message_image['Content-disposition'] = 'attachment;filename="imageTest.jpg"'
Message.attach(message_image)
#发送excel-附件
message_xlsx = MIMEText(open('sendTest.xlsx','rb').read(),'base64','utf-8')
message_xlsx['Content-disposition'] = 'attachment;filename="sendTest.xlsx'
Message.attach(message_xlsx)
try:
#配置相关
Message['Subject'] = Subject
Message['From'] = From
Message['To'] = To
#qq邮箱 smtp.qq.com,端口:465,QQ邮箱发送需要使用SMTP_SSL
server = smtplib.SMTP(mailServer)
print('登录结果:', server)
#操作
server.sendmail(from_addr = From, to_addrs = To.split(','),msg = Message.as_string())
print("send success!!")
server.quit()
except smtplib.SMTPException as e:
print("send fail:",e)
if __name__ == "__main__":
emailSend(From = FROM, To = TO, Subject = subject, Message = message)