网站版面设计,宁海建设局网站,网站开发入门书籍,网络科技公司怎么赚钱简单邮件传输协议(SMTP)是一种协议#xff0c;用于在邮件服务器之间发送电子邮件和路由电子邮件。Python提供smtplib模块#xff0c;该模块定义了一个SMTP客户端会话对象#xff0c;可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件。
SMTP通讯的基本流程可以概…简单邮件传输协议(SMTP)是一种协议用于在邮件服务器之间发送电子邮件和路由电子邮件。Python提供smtplib模块该模块定义了一个SMTP客户端会话对象可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件。
SMTP通讯的基本流程可以概括为以下几点
1.连接SMTP服务器
2.登陆用户名和密码
3.发送指定邮件内容
4.退出SMTP连接
一、发送纯文本格式邮件
#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding(utf8)
import smtplib
from smtplib import SMTP
from email.mime.text import MIMEText
from email.header import Header
#构造纯文本邮件内容
msg MIMEText(hello,send by Python.....,plain,utf-8)
#发送者邮箱
sender xxxxxXXXXX.com.cn
#发送者的登陆用户名和密码
user xxxxxXXXX.com.cn
password xxxxxx
#发送者邮箱的SMTP服务器地址
smtpserver xxxx
#接收者的邮箱地址
receiver [xxxxxxqq.com,xxxxxxoutlook.com] #receiver 可以是一个list
smtp smtplib.SMTP() #实例化SMTP对象
smtp.connect(smtpserver,25) #缺省默认端口是25 也可以根据服务器进行设定
smtp.login(user,password) #登陆smtp服务器
smtp.sendmail(sender,receiver,msg.as_string()) #发送邮件 这里有三个参数login()方法用来登录SMTP服务器sendmail()方法就是发邮件由于可以一次发给多个人所以传入一个list邮件正文
是一个stras_string()把MIMEText对象变成str。smtp.quit()
运行之后就会收到邮件但是仔细观察会发现
1.邮件没有主题
2.看不到收件人的信息
这是因为邮件主题、如何显示发件人、收件人等信息并不是通过SMTP协议发给MTA而是包含在发给MTA的文本中的所以我们必须把From、To和Subject添加到MIMEText中才是一封完整的邮件
msg MIMEText(hello,utf-8)
msg[From] Header(Python测试,utf-8)
msg[To] Header(管理员,utf-8)
subject python SMTP 测试邮件
msg[Subject] Header(subject,utf-8)
二、发送HTML格式的邮件
如果我们要发送HTML邮件而不是普通的纯文本文件怎么办方法很简单在构造MIMEText对象时把HTML字符串传进去再把第二个参数由plain变为html就可以了
msg MIMEText(
你好
,html,utf-8)
#发送HTML格式邮件就只需要把对应的第二个参数改为html即可
三、发送带附件的邮件
发送带附件的邮件首先要创建MIMEMultipart()实例然后构造附件如果有多个附件可依次构造最后利用smtplib.smtp发送。
#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding(utf8)
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
#发送邮件服务器
smtpserver xxxxx
#发送邮箱用户名和密码
user xxxxxx
password xxxxxx
#发送邮箱
sender xxxxx
#接受邮箱
receiver xxxxxxx
#创建一个带附件的实例
message MIMEMultipart()
message[From] Header(Python 测试,utf-8)
message[To] Header(测试,utf-8)
subject Python SMTP邮件测试
message[Subject] Header(subject,utf-8)
#邮件正文内容
message.attach(MIMEText(这是测试Python发送附件功能....,utf-8))
#构造附件1传送当前目录下的test.txt文件
att1 MIMEText(open(123.txt,rb).read(),base64,utf-8)
att1[Content-Type] application/octet-stream
#这里的filename可以任意写写什么名字 邮件中就显示什么名字
att1[Content-Disposition] attachment;filename:123.txt
message.attach(att1)
smtp smtplib.SMTP()
smtp.connect(smtpserver,25)
smtp.login(user,password)
smtp.sendmail(sender,message.as_string())
smtp.quit()
小结
使用Python的smtplib发送邮件十分简单只要掌握了各种邮件类型的构造方法正确设置好邮件头就可以顺利发出。
构造一个邮件对象就是一个Messag对象如果构造一个MIMEText对象就表示一个文本邮件对象如果构造一个MIMEImage对象就表示一个作为附件的图片要把多个对象组合起来就用MIMEMultipart对象而MIMEBase可以表示任何对象。它们的继承关系如下
Message
- MIMEBase
- MIMEMultipart
- MIMENonMultipart
- MIMEMessage
- MIMEText
- MIMEImage
这种嵌套关系就可以构造出任意复杂的邮件。你可以通过email.mime文档查看它们所在的包以及详细的用法。
以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持编程小技巧。