python处理SMTP协议发送邮件
smtplib 主要解决邮件的传输,与服务器的连接关闭等操作
email主要处理与邮件的正文,附件等与内容有关的东西
一、发送邮件
1、协议
(1)SMTP:发送邮件,Simple Mail Transfer Protocol
(2)POP3:接收文件,Post Offic Protocol V3
(3)IMAP:网络邮件访问协议,Internet Mail Access Protocol,比POP3实时性更强
2、如何发送邮件
截至(2022年1月),网易邮箱的SMTP(发送邮件)和IMAP/POP3(接收邮件)服务器地址如下:
SMTP服务器地址(发送邮件):smtp.163.com SMTP服务器IP地址:122.228.247.124 25端口(不加密)、465端口(SSL加密)、587端口(TLS加密)
IMAP服务器地址(接收邮件):imap.163.com IMAP服务器IP地址:123.126.100.39 143端口(不加密)、993端口(SSL加密)
POP3服务器地址(接收邮件):pop.163.com POP3服务器IP地址:123.125.50.38 110端口(不加密)、995端口(SSL加密)
# 直接导入内置模块
import smtplib,time
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# smtplib 主要解决邮件的传输,与服务器的连接关闭等操作
# email主要处理与邮件的正文,附件等与邮件内容有关的东西
# 发送邮件第一步 - 构建邮件的主体对象
# sender = '13772816626@163.com'
# reciver = '13772816626@163.com'
sender = '2811403517@qq.com'
reciver = '2811403517@qq.com'
msg = MIMEMultipart() # 构建邮件的主体对象
msg['Subject'] = 'Python test eamil' #邮件标题
msg['From'] = sender # 邮件发送者
msg['To'] = reciver # 邮件接受者
# 第二步 - 构建邮件的正文
body = '''
<div style='font-size: 30px; color: red;'>这是一个邮件的正文<a href='www.woniuxy.com'>点我有惊喜</a></div>
''' # body是邮件正文的内容,基本上邮件的正文目前都是html格式
content = MIMEText(body,'html','utf-8') # content 是邮件的正文,其中包含内容,格式,编码
msg.attach(content) # 将邮件内容加到msg主体对象当中
# 添加附加邮件
attachment = MIMEApplication(open('./woniunote.jpg','rb').read())
filename = 'text.jpg'
attachment.add_header('content-Disposition','attachment',filename=filename)
msg.attach(attachment)
# 建立与邮件服务器的连接,并发送邮件
smtpObj = smtplib.SMTP() # 实例化 SMTP 对象,如果基于smtplib.SMTP_SSL
smtpObj.connect('mail.qq.com','25') # 连接邮件服务器地址,参数要有正确端口号
smtpObj.login(user=sender,password='MDQ2yxh2YF2ymq13') # 连接上邮件服务器地址之后进行登录,用户登录之后才可进行发送邮件,qq这里的password是授权码
smtpObj.sendmail(sender,reciver,str(msg)) # 登陆成功之后才可进行发送邮件,三个参数分别是 发送者,接收者,字符串版邮件主体对象
smtpObj.quit() # 关闭 SMTP 连接
# 且SMTP邮件发送是以明文发送的,就是用了个base64转码