python发送邮件库_Python发送邮件——email库、smtplib库的使用

学习一下使用Python来发送邮件,记录如下。

一、smtplib模块的使用

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

#连接到SMTP服务器,参数表示SMTP主机和端口,

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

#登录SMTP服务器

SMTP.login(user,password)

#发送邮件。msg是字符串,表示邮件内容。

SMTP.sendmail(from_addr, to_addrs, msg)

#断开连接

SMTP.quit()

二、email模块使用

Email库用来处理邮件消息。包括MIME和基于RFC2822的消息文档。

有关MIME的一些知识

RFC2822定义的邮件格式中,邮件体只是单纯的ASCII编码的字符序列,MIME扩展邮件的格式,用以支持非ASCII编码的文本、非文本附件及包含多个部分(multi-part)的邮件体。

MIME消息由消息头、消息体组成,即邮件的邮件头、邮件体。中间以空行进行分隔。

1、邮件头:包括发件人(from)、收件人(to)、邮件主题(subject)、接收日期(date)、MIME版本、邮件内容类型等信息。每条信息称为一个域,由域名后加“:”和信息内容构成,域的首行必须顶头写。

2、邮件体:有text/plain(纯文本)和text/html(超文本)之分,由邮件头的“content

type”域指出。可以同时存在,也可以只存在一种。这就是为什么有些邮件既可以用html格式查看,又可以用文本格式查看的原因。邮件体分为多个段,称为Payload。每个段也包括段头段尾,中间以空行分隔。multipart类型有3种:multipart/mixed

multipart/related

multipart/alternative。邮件里添加附件要定义multipart/mixed段,如果纯文本超文本共存,则要定义multipart/alternative,如存在内嵌资源,要定义multipart/related。

3、附件(attach)。发送邮件时,可以将本机的文件一起发送。附件可以有0个或多个,只要附件的总大小,不超过邮件服务器所声明的最大容量。

class email.mime.text.MIMEText(_text[, _subtype[,

_charset]])

用于生成MIME对象的主体文本:_text指定邮件内容,_subtype指定邮件类型,_charset指定编码。

class email.mime.multipart.MIMEMultipart()

用于生成包含多个部分的邮件体的MIME对象

三、一些简单示例

1.发送简单文本邮件的示例

import smtplib

from email.mime.text import MIMEText

#正文

mail_body='hello, this is the mail content'

#发信邮箱

mail_from='sender@example.com'

#收信邮箱

mail_to=['to@example.com']

#定义正文

msg=MIMEText(mail_body)

#定义标题

msg['Subject']='this is the title'

#定义发信人

msg['From']=mail_from

msg['To']=';'.join(mail_to)

#定义发送时间(不定义的可能有的邮件客户端会不显示发送时间)

msg['date']=time.strftime('%a, %d %b %Y %H:%M:%S %z')

smtp=smtplib.SMTP()

#连接SMTP服务器,此处用的126的SMTP服务器

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

#用户名密码

smtp.login('用户名','密码')

smtp.sendmail(mail_from,mail_to,msg.as_string())

smtp.quit()

print 'ok'

2.发送包含图片附件邮件的示例

发送带附件的邮件,首先要创建MIMEMultipart实例,然后构造附件,如果有多个附件,可依次构造。

import smtplib

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.mime.image import MIMEImage

#创建实例,构造MIMEMultipart对象做为根容器

msg=MIMEMultipart()

msg['Subject']='this is title'

msg['From']=mail_from

msg['To']=';'.join(mail_to)

# 构造MIMEText对象做为邮件显示内容并附加到根容器

txt=MIMEText(u'这是中文内容哦','plain','utf-8')

msg.attach(txt)

picfiles=['', '', ...]  #图片路径

for file in picfiles:

f=open(file,'rb')

img=MIMEImage(f.read())

f.close()

msg.attach(img)

smtp=smtplib.SMTP()

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

smtp.login('用户名','密码')

smtp.sendmail(mail_from,mail_to,msg.as_string())

smtp.quit()

3.发送HTML邮件示例

multipart使用alternative类型,这样就可以让客户端来决定显示HTML类型还是text类型。

import smtplib

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

#建立消息容器,正确的MIME类型是multipart/alternative

msg=MIMEMultipart('alternative')

msg['subject']='link'

msg['from']=mail_from

msg['to']=';'.join(mail_to)

text="Hello!\nHow are you?\nHere is the link you

wanted:\nhttp://www.python.org"

html="""\

Hello!

How

are you?

Here

is the link you wanted.

"""

part1=MIMEText(text,'plain')

part2=MIMEText(html,'html')

msg.attach(part1)

msg.attach(part2)

相关文档地址:http://docs.python.org/library/email-examples.html

标签: Python 标准库 email smtplib 邮件 MIME

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值