点上方蓝字关注,一起愉快地学习哦~
![ce020dac4e5d599bb539b2a9a5b1fdfc.gif](https://i-blog.csdnimg.cn/blog_migrate/df444fe5a0f44a5adf5f500db5ea9de4.gif)
文章不短,让我们边听边看吧~
简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。
![74d7fee1e7548da8b42cf4fa8612471d.png](https://i-blog.csdnimg.cn/blog_migrate/7b506c597711a083e81d0c6a5fba0b06.jpeg)
对于一个普通邮件,一般以以下几个流程进行准备与发送:
1.构建邮件头。其中可包括发件人、收件人、邮件主题、接收日期、邮件内容等信息。
2.构建邮件本体。其中可包括存文本、超文本等。
3.添加附件。可以不添加或添加一个以上附件,但要注意的是附件的总大小不能超过邮件服务器所声明的最大容量。
发邮件的大致流程大家已经知晓,现在我来向大家介绍一下具体的准备过程以及发邮件步骤吧~
![cfcef7cac968fd4036e806d65eda2844.png](https://i-blog.csdnimg.cn/blog_migrate/aef9c51fb423d0bfb944369a8a89108a.png)
![3449020c2534c4116e83e0343c722a64.png](https://i-blog.csdnimg.cn/blog_migrate/76484d652d1b42964b2f625e1e448cc8.png)
![445bd42917b8fc440953b211337581d4.png](https://i-blog.csdnimg.cn/blog_migrate/deeb47d2dc5246b969ff82696c020cc2.png)
常用的邮件服务商有两个:QQ邮箱和网易邮箱。小编推荐使用QQ邮箱,经过亲测得知用Python+网易邮箱很容易被当成垃圾邮件,且有些Windows7系统的电脑无法连接邮箱服务器,具体原因还没找出来,难道是因为传说中的“机你太美”?
本次教程也选取QQ邮箱作为例子去讲解。进入QQ邮箱之后点击设置进入邮箱设置,然后点击账户,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务设置。
点击开启SMTP相关服务,通过相应的安全验证,生成如下授权码(后面需要)。
![cfcef7cac968fd4036e806d65eda2844.png](https://i-blog.csdnimg.cn/blog_migrate/aef9c51fb423d0bfb944369a8a89108a.png)
![3449020c2534c4116e83e0343c722a64.png](https://i-blog.csdnimg.cn/blog_migrate/76484d652d1b42964b2f625e1e448cc8.png)
2.组建邮件
![445bd42917b8fc440953b211337581d4.png](https://i-blog.csdnimg.cn/blog_migrate/deeb47d2dc5246b969ff82696c020cc2.png)
发送邮件使用的两个主要Python库为smtplib库和email库。可以直接在cmd里使用pip install 命令进行安装。
(1)我们先导入这两个包的需要板块。
import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr
其中smtplib用来连接服务器,MIMEText用来构建主题内容,formataddr用来构建邮件头。
(2)接下来我们设置发送邮件所需要的数据。
①设置服务器
mail_host="smtp.qq.com”
②设置发送人邮箱
mail_user=“xxxxxxxx@qq.com”
③设置前面提到的授权码
mail_pass="XXXXXXXXXXXXX"
④设置收件人邮箱
receiver =' xxxxxxxx @qq.com'
(3)下面我们开始构建邮件内容,其中第一个参数是所要发送的文本内容,第二个参数是定义类型,'plain'表示纯文本类型,最后一个参数定义了编码方式。
①
message = MIMEText('练习时长两年半的实习生你好!请开始唱,跳,rap!', 'plain', 'utf-8')
②然后定义收发人的名称,前者为名称,后者为地址
message ['From']=formataddr(["测试者", mail_user])message ['To']=formataddr(["蔡某某", receiver])
③定义邮件主题
message ['Subject']=" 鸡你太美~"
到此为止,一个简单的邮件就组建完成啦!
![cfcef7cac968fd4036e806d65eda2844.png](https://i-blog.csdnimg.cn/blog_migrate/aef9c51fb423d0bfb944369a8a89108a.png)
![3449020c2534c4116e83e0343c722a64.png](https://i-blog.csdnimg.cn/blog_migrate/76484d652d1b42964b2f625e1e448cc8.png)
3.发送邮件
![445bd42917b8fc440953b211337581d4.png](https://i-blog.csdnimg.cn/blog_migrate/deeb47d2dc5246b969ff82696c020cc2.png)
首先需要连接邮件服务器。服务器地址已定义过,端口号为25。
server=smtplib.SMTP(mail_host,25)
连接到服务器之后接着进行登录,使用到的参数有发件人邮箱地址和授权码。
server.login(mail_user, mail_pass)
最后一步,发送。其中设置发件人、收件人和字符串的形式发送。
server.sendmail(mail_user,[ receiver,], message.as_string())
![cfcef7cac968fd4036e806d65eda2844.png](https://i-blog.csdnimg.cn/blog_migrate/aef9c51fb423d0bfb944369a8a89108a.png)
![3449020c2534c4116e83e0343c722a64.png](https://i-blog.csdnimg.cn/blog_migrate/76484d652d1b42964b2f625e1e448cc8.png)
4.退出服务系统
![445bd42917b8fc440953b211337581d4.png](https://i-blog.csdnimg.cn/blog_migrate/deeb47d2dc5246b969ff82696c020cc2.png)
需要注意的是,需要同时退出才能发送成功。
server.quit()
下面是发送结果:
![cfcef7cac968fd4036e806d65eda2844.png](https://i-blog.csdnimg.cn/blog_migrate/aef9c51fb423d0bfb944369a8a89108a.png)
![3449020c2534c4116e83e0343c722a64.png](https://i-blog.csdnimg.cn/blog_migrate/76484d652d1b42964b2f625e1e448cc8.png)
完整代码
![445bd42917b8fc440953b211337581d4.png](https://i-blog.csdnimg.cn/blog_migrate/deeb47d2dc5246b969ff82696c020cc2.png)
import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrmail_host="smtp.qq.com"mail_user="xxxxxxx@qq.com"mail_pass="xxxxxxxxxxxxx"receiver ='xxxxxxxx@qq.com'message = MIMEText('练习时长两年半的实习生你好!请开始唱,跳,rap!', 'plain', 'utf-8')message ['From']=formataddr(["测试者", mail_user])message ['To']=formataddr(["蔡某某", receiver])message ['Subject']=" 鸡你太美~"server=smtplib.SMTP(mail_host,25)server.login(mail_user, mail_pass)server.sendmail(mail_user,[ receiver,],message.as_string())server.quit()
最后简单介绍一下如何添加附件:
首先我们创建一个容器,用于容纳文本和附件两类内容
message = MIMEMultipart()
然后定义文本内容并把内容加入到容器中
part1 = MIMEText(’练习时长两年半的实习生你好!请开始唱,跳,rap!’,'plain','utf-8')message.attach(part1)
同样的定义附件内容,并加到容器中,相比于纯文本多一个文件头的定义,主要的就是定义邮件中显示名称等内容
part = MIMEApplication(open('C:/Users/1/Desktop/test.txt','rb').read())part.add_header('Content-Disposition', 'attachment', filename=Header('test.txt', 'utf-8').encode())message.attach(part)
其他内容不变地配置就OK啦~
使用Python自动发送邮件技术可以用来群发邮件和报送脚本运行状况,总的来说很实用,只是大家不要把它用来发送垃圾邮件哦。
这里有你可能错过的精彩~
Python | 恋习Python之NumPy
Python|手握python,轻松驾驭SQL Server
文字来源|程威
图片|程威
编辑|邵艳红
审核|宋欣蕊
欢迎投稿至:Datahelpclub@126.com
欢迎大家转发,但大家记得标明原创出处哟~如果喜欢记得点【在看】呀~扫描关注我们的公众号↓