python学习笔记(十一)使用email与smtplib
来源:互联网 发布:pw域名国内停止注册 编辑:程序博客网 时间:2024/05/22 13:42
在一些网站注册中,会自动发送一封邮件用于验证。python也可以实现发送邮件,使用email与smtplib这两个模块。本文介绍两个模块的大致作用,在文末给出学习项目中正在使用中的例子。
email模块主要用于构建邮件的内容,其本质是一个格式化的工具。smtplib作用主要是发送邮件,使用SMTP协议。
开始
在发送邮件之前需要了解邮件的大致结构。
邮件的结构
一封邮件的主要构成有寄件人(From)、收信人(To)、主题(Subject)、内容。
使用email中的模块来构造一个文字邮件内容:
from email.mime.text import MIMETextmsg = MIMEText(u'注意:\r\n具体内容见附件','plain','utf-8')msg_mt['Subject'] = u'通知'msg_mt['From'] = 'XXXX<sxzbhw@163.com>'msg_mt['To'] = "XXXXXXXX@qq.com"
在构造对象时即可传入其内容。也可以使用set_payload函数。
发送邮件
发送邮件时,必须连接一个邮件服务器,通常需要用户名和口令。
smtp = smtplib.SMTP()smtp.connect('smtp.163.com')smtp.login(username, password)smtp.sendmail(sender, msg_mt['To'], msg_mt.as_string())smtp.quit()
一个例子
email库中包含许多基于MIMEBase的mime类,可以通过MIMEMultipart()结合起来,发送附件(addfile()函数)。
#coding: utf-8 import smtplibfrom email.mime.text import MIMETextfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEBase import MIMEBasefrom email.header import Headerfrom email import encodersimport mimetypesclass email_sender(object): def __init__(self,usrname,password,sever = 'smtp.163.com'): self.usrname = usrname self.password = password self.sever = sever self.content = '' self.msg = MIMEMultipart() self.file_list = [] def add_text(self,str): self.content = self.content + str def add_file(self,fname): mimetype,mimeencoding = mimetypes.guess_type(fname) if mimeencoding or (mimetype is None): mimetype = "application/octet-stream" maintype,subtype = mimetype.split("/") with open(fname,'rb') as fin: mime = None if mimetype == 'text': mime = MIMEText(fin.read(),_subtype = subtype) else: mime = MIMEBase(maintype,subtype) mime.set_payload(fin.read()) encoders.encode_base64(mime) mime.add_header('Content-Disposition','attachment',filename=fname) scount = str(len(self.file_list)) mime.add_header('Content-ID', '<'+scount+'>') mime.add_header('X-Attachment-Id', scount) self.file_list.append(mime) def sendto(self,subject,dst_addr): self.msg['Subject'] = Header(subject, 'utf-8') print Header(subject, 'utf-8') self.msg['From'] = 'dljgs<%s>'%self.usrname print 'dljgs<%s>'%self.usrname self.msg['To'] = dst_addr print dst_addr self.msg.attach(MIMEText(self.content,'plain','utf-8')) for item in self.file_list: self.msg.attach(item) smtp = smtplib.SMTP() smtp.connect(self.sever) smtp.login(self.usrname, self.password) smtp.sendmail(self.usrname, dst_addr, self.msg.as_string()) smtp.quit()
参考资料:
SMTP:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000
import错误:http://blog.csdn.net/spring292713/article/details/45077649
添加附件:http://blog.chinaunix.net/uid-199788-id-99454.html
0 0
- python学习笔记(十一)使用email与smtplib
- python 使用smtplib发送带附件的email
- 使用python的email、smtplib、poplib模块收发邮件
- python学习笔记(十一)使用SQLite
- python 学习笔记 Email
- python学习--smtplib
- Python模块学习--smtplib
- python 用模块email,smtplib发邮件
- python 学习笔记(十一)
- Python学习笔记(十一)
- Python学习笔记(十一)
- Python发送邮件——email库、smtplib库的使用
- Python自动化运维笔记(六):使用smtplib模块发送电子邮件
- Python学习笔记(十一):Python函数
- python email模块学习笔记
- PYTHON模块学习之smtplib
- Python使用smtplib发送邮件
- python 系统学习笔记(十一)---sys
- Java多线程4:synchronized锁机制
- cookie 和session以及小知识 的区别详解
- 聊天程序(基于Socket、Thread)
- c#字符串转换成double数组
- asp.net中session的原理及应用
- python学习笔记(十一)使用email与smtplib
- 进程
- 测试不同格式下depth buffer的精度
- 在MAC上配置tomcat J2EE eclipse的步骤
- php实现中文字串截取无乱码的三种方法(详)
- go语言
- 代码整洁之道笔记 - 第二章 有意义的命名
- eclipse设置经典黑色主题样式
- Java Concurrency代码实例之一执行者与线程池