python 怎么发送邮件
一、准备
1、pop3 :
POP3是Post Office Protocol 3的简称,即邮局协议的第三个版本,他是规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的协议。它是因特网电子邮件的第一个离线协议的标准。POP3允许用户从服务器上把邮件存储到本地计算机上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接受邮件服务器,用来接受电子邮件
2、smtp:
SMTP的全称是Simple Mail Transfer Protocol,即简单的邮件传输协议。它是一组用于从源地址到目的地的地址传输邮件的规范,通过它控制邮件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或者中转信件时找到下个目的地。SMTP服务器就是遵循SMTP协议的发送邮件服务器。SMTP认证,简单来说就是要求必须在提供了账户名和密码之后才能登陆SMTP服务器。
3、IMAP:
IMAP全称是Iternet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似的邮件访问标准协议之一。不同的是,开启了IMAP后,你在电子邮件客户端收取的邮件仍然保存在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件、标记邮件等,服务器上的邮件也会做相应的动作。无论从浏览器登陆还是客户端登陆邮箱看到的邮件以及状态都是一致的。
因此:首先 开启邮箱的 POP3/smtp/IMAP ; 获取邮箱的授权码
4、python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。
smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。
email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等
二、 smtp 使用
可以通过3种方式登录 , 明文 / SSl / TLS
1、SSL安全邮件的支持有两种方案,一种老的是专门开启一个465端口来接收ssl邮件,另一种更新的做法是在标准的25端口的smtp上增加一个starttls的命令来支持。#smtp = smtplib.SMTP_SSL(smtpHost,sslPort)
smtp = smtplib.SMTP_SSL(smtpHost,sslPort)
smtp.ehlo
smtp.login(username,password)
2.tls
tls加密方式,通信过程加密,邮件数据安全,使用正常的smtp端口
smtp = smtplib.SMTP(smtpHost,smtpPort)
smtp.set_debuglevel(True) smtp.ehlo() smtp.starttls() smtp.ehlo() smtp.login(username,password)
三、 emil 使用
email模块下的mime模块下有常用的三个模块,三个模块中有三个大类
MIMEText对象中有三个需要我们设置的参数,正文内容,正文内容的类型,例如:”text/plain”和”text/html”,正文内容的编码。
1、普通文本
# 发送文本内容 text_info = 'hello world \nhahha\n hahah\n ehhehehehe\nwww.baidu.com' text_sub = MIMEText(text_info,'plain', 'utf-8')
smtp.send_message(from_addr=fromMail,to_addrs=toMail,msg=text_sub)
2、发送附件
#发送附件: msg = MIMEMultipart('mixed') file =open(r'D:\PycharmProjects\WechatHelper-master\easy_au\report\report.html','rb').read() txt = MIMEText(file, 'base64', 'gbk32') txt["Content-Type"] = 'application/octet-stream' #以下代码可以重命名附件 time_ = str(datetime.datetime.now()) txt.add_header('Content-Disposition', 'attachment', filename='自动化测试报告'+time_+'.html') msg.attach(txt)
3、 代码
----
参考:
https://blog.csdn.net/diyiday/article/details/81504647
https://www.jb51.net/article/167376.htm
https://www.cnblogs.com/yufeihlf/p/5726619.html
https://blog.csdn.net/chinesepython/article/details/82465947