python发送带附件邮件

来源:互联网 发布:什么牌子沙发好 知乎 编辑:程序博客网 时间:2024/05/20 02:23
1. 不包括附件的邮件#coding:utf-8import smtplibimport string# 发送普通的文本邮件# 邮件smtp的地址HOST = 'smtp.163.com'# 定义邮件的标题SUBJECT = '这是邮件标题'# 发件人FROM = 'xxx@163.com'# 收件人To = 'xxx@qq.com'# 发送的邮件文本内容TEXT = '这是一封测试邮件,由<xxx@163.com>发出'# 构建邮件内容# From 发件人  To 收件人  Subject 邮件标题  邮件内容# split:将字符串根据某些字符分割成列表# join:把列表中的所有元素根据某个字符进行拼接msg_content = string.join(['From:%s'%FROM,'To:%s'%To,'Subject:%s'%SUBJECT,'',TEXT],"\r\n")# 构造smtp服务对象,可以在构造对象时将host和port传入,可以直接连接服务器smtp_server = smtplib.SMTP()# 开启发送debug模式,把发送邮件的过程显示出来smtp_server.set_debuglevel(1)# 连接邮箱服务器smtp_server.connect(host=HOST,port='25')# 启动安全传输模式smtp_server.starttls()# 登录邮箱服务器smtp_server.login(FROM,'xxxxxx')# 发送邮件smtp_server.sendmail(from_addr=FROM,to_addrs=To,msg=msg_content)# 关闭smtp服务器连接smtp_server.quit()

2.包括附件的邮件

#coding:utf-8import smtplibimport emailfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.image import MIMEImageHOST = 'smtp.163.com'SUBJECT = '带附件的测试邮件'FROM = 'xxx@163.com'To = 'xxx@qq.com'# 定义添加图片附件的函数# path 图片路径   imgid对应附件id,可以根据id嵌入正文def add_image(path,imgid):    data = open(path,'rb')    # 创建MIMEImage对象,读取图片作为imgdata的数据参数    msg_image = MIMEImage(data.read())    # 关闭文件    data.close()    # 指定图片文件的Content-ID    msg_image.add_header('Content-ID',imgid)    return msg_image# 创建要发送的邮件正文及附件对象# related 使用邮件内嵌资源,可以把附件中的图片等附件嵌入到正文中msg = MIMEMultipart('related')# 创建一个用于发送文本的MIMEText对象msg_text = MIMEText('<h1 style="text-algin:center">恭喜您查收到该邮件</h1><span style="color:red">详情如下:</span><br><img src="cid:zg">','html','utf-8')msg.attach(msg_text)# 添加图片附件msg.attach(add_image('center.png','zg'))# 将xls作为附件添加到邮件中# 创建MIMEText对象,保存xls文件attach = MIMEText(open(u'内涵段子.xls','rb').read(),'base64','utf-8')# 指定当前文件格式类型attach['Content-type'] = 'application/octet-stream'# 配置附件显示的文件名称,当点击下载附件时,默认使用的保存文件的名称# gb18030 qq邮箱中使用的是gb18030编码,防止出现中文乱码attach['Content-Disposition'] = 'attachment;filename="内涵段子.xls"'.decode('utf-8').encode('gb18030')# 把附件添加到msg中msg.attach(attach)# 设置必要请求头信息msg['From'] = FROMmsg['To'] = Tomsg['Subject'] = SUBJECT# 发送邮件smtp_server = smtplib.SMTP()smtp_server.set_debuglevel(1)smtp_server.connect(HOST,'25')smtp_server.starttls()smtp_server.login(FROM,'xxx')smtp_server.sendmail(FROM,To,msg.as_string())smtp_server.quit()


原创粉丝点击