python发送带附件邮件

1. 不包括附件的邮件

#coding:utf-8
import smtplib
import string
# 发送普通的文本邮件

# 邮件smtp的地址
HOST = 'smtp.163.com'
# 定义邮件的标题
SUBJECT = '这是邮件标题'
# 发件人
FROM = '[email protected]'
# 收件人
To = '[email protected]'
# 发送的邮件文本内容
TEXT = '这是一封测试邮件,由发出'
# 构建邮件内容
# 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 = '[email protected]'
To = '[email protected]'

# 定义添加图片附件的函数
# 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('

恭喜您查收到该邮件

详情如下:
','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()


你可能感兴趣的:(开发)