您的位置:首页 > 编程语言 > Python开发

python发送包含html、图片、附件和链接的邮件

2014-10-09 18:28 861 查看
1.smtplib模块的使用

smtplib库用来发送邮件。需要用到的函数如下:

连接到SMTP服务器,参数为SMTP主机和端口:

SMTP.connect([host[,port]])

登录SMTP服务器,参数为邮箱用户名和密码:

SMTP.login(user,password)

发送邮件。msg表示邮件内容:

SMTP.sendmail(from_addr, to_addrs, msg)

断开连接:

SMTP.quit()

2.邮件格式MIME介绍

最常见的MIME首部是以Content-Type开头的:

1) Content-Type: multipart/mixed

它表明这封Email邮件中包含各种格式的MIME实体但没有具体给出每个实体的类型。

2) Content-Type: multipart/alternative

如果同一封Email邮件既以文本格式又以HTML格式发送,那么要使用Content-Type: multipart/alternative。这两种邮件格式实际上是显示同样的内容但是具有不同的编码。

3) Content-Type: multipart/related

用于在同一封邮件中发送HTML文本和图像或者是其他类似类型。

邮件主体的编码:

主要是包括quoted-printable与base64两种类型的编码。Base64和Quoted-Printable都属于MIME(多用途部分、多媒体电子邮件和 WWW 超文本)的一种编码标准,用于传送诸如图形、声音和传真等非文本数据)。

#!/usr/bin/python

#coding:utf-8

import smtplib

from email.Header import Header

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.mime.image import MIMEImage

def sendMail(sender,receiver,subject):

smtpserver = 'smtp.126.com'

username = 'zhaohaihua1213'

password = '123456'

msg = MIMEMultipart('alternative')

msg['Subject'] = Header(subject,'utf-8')

#html格式构造

html = """\

<html>

<head>测试一下</head>

<body>

<p>兄弟们!<br>

你们好啊<br>

点击进入 <a href=" http://www.mykuaiji.com ">会计家园</a>

<br><img src="cid:image1"></br>

</p>

</body>

</html>

"""

htm = MIMEText(html,'html','utf-8')

msg.attach(htm)

#构造图片

fp = open('meinv.jpg','rb')

msgImage = MIMEImage(fp.read())

fp.close()

msgImage.add_header('Content-ID','<image1>')

msg.attach(msgImage)

#构造附件

att = MIMEText(open('Pictures.rar','rb').read(),'base64','utf-8')

att["Content-Type"] = 'application/octet-stream'

att["Content-Disposition"] = 'attatchment;filename="Pictures.rar"'

msg.attach(att)

smtp = smtplib.SMTP()

smtp.connect('smtp.126.com')

smtp.login(username,password)

smtp.sendmail(sender,receiver,msg.as_string())

smtp.quit()

sender = 'zhaohaihua1213@126.com'

receiver = '903397616@qq.com'

subject = '图片附件html发送邮件测试'

sendMail(sender,receiver,subject)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: