python发送带附件邮件

1. 不包括附件的邮件

#coding:utf-8
import smtplib
import 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-8
import smtplib
import email
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage

HOST = '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'] = FROM
msg['To'] = To
msg['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()






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值