小编通过163邮箱进行发送的邮件,如果是其他邮箱,在邮件服务器的设置步骤中,带上相应邮箱的后缀即可
#发送邮件带附件
#导入相关发送邮件的类库包
from email.header import Header #设置邮件的标题
from email.mime.text import MIMEText #设置邮件正文信息
import smtplib #设置邮箱服务器
from email.mime.multipart import MIMEMultipart #设置附件
#定义一个发送邮件的类
class test_sendemail():
#定义发送邮件的方法
def send_emailfile(self):
#邮件服务器的设置
smtpemail=smtplib.SMTP(“smtp.163.com”)
#登录邮箱 smtpemail.login(“邮箱账号”,“邮箱密码”)# 账号、密码;163邮箱的密码是邮件对客户端的授权码
#以只读的方式打开需要发送的附件 sendfile=open(“需要发送附件的路径及文件名E:\file.csv”,“r”).read()
# 确认附件文件及字符集
msg=MIMEText(sendfile,“utf-8”)#邮件的正文,格式是HTML,编码格式是utf-8
#指定发送类型,用应用程序或字节流的方式打开
msg[‘Content-Type’]=“application/octet-stream”
#附件信息描述,在界面上的显示,定义附件名“测试失败报告.csv”
msg.add_header(‘Content-Disposition’,‘attachment’,filename=Header(“测试失败报告.csv”,“utf-8”).encode())
#定义邮件发送对象
msgroot=MIMEMultipart()
#设置邮件内容
msgroot.attach(MIMEText(“测试失败报告邮件正文”,“html”,“utf-8”))
# 设置邮件的标题
msgroot["subject"]=Header("测试bug报告邮件")
# 指定发送人
msgroot["from"]="发送人邮箱账号"
# 指定收件人
msgroot["to"]="收件人邮箱账号"
#添加附件对象,才能成功发送附件
msgroot.attach(msg)
# 进行邮件发送
smtpemail.sendmail(msgroot["from"],msgroot["to"],msgroot.as_string())#msg.as_string()是将发送内容进行字符转译
#关闭邮件服务器
smtpemail.close()
#主函数,调用发送邮件
if name == ‘main’:
sendemailobj=test_sendemail()
sendemailobj.send_emailfile()