为什么mime画在smtp之上_Python | 教你如何使用Python发邮件——SMTP发送邮件

点上方蓝字关注,一起愉快地学习哦~

ce020dac4e5d599bb539b2a9a5b1fdfc.gif

文章不短,让我们边听边看吧~

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

74d7fee1e7548da8b42cf4fa8612471d.png

对于一个普通邮件,一般以以下几个流程进行准备与发送:

1.构建邮件头。其中可包括发件人、收件人、邮件主题、接收日期、邮件内容等信息。

2.构建邮件本体。其中可包括存文本、超文本等。

3.添加附件。可以不添加或添加一个以上附件,但要注意的是附件的总大小不能超过邮件服务器所声明的最大容量。

发邮件的大致流程大家已经知晓,现在我来向大家介绍一下具体的准备过程以及发邮件步骤吧~

cfcef7cac968fd4036e806d65eda2844.png 3449020c2534c4116e83e0343c722a64.png 1.配置发件人邮箱 445bd42917b8fc440953b211337581d4.png

常用的邮件服务商有两个:QQ邮箱和网易邮箱。小编推荐使用QQ邮箱,经过亲测得知用Python+网易邮箱很容易被当成垃圾邮件,且有些Windows7系统的电脑无法连接邮箱服务器,具体原因还没找出来,难道是因为传说中的“机你太美”?

本次教程也选取QQ邮箱作为例子去讲解。进入QQ邮箱之后点击设置进入邮箱设置,然后点击账户,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务设置。

5e248f2858e52d4c3edc6e1cf9f56aaa.png

点击开启SMTP相关服务,通过相应的安全验证,生成如下授权码(后面需要)。

7081c0527927627e80bc0dfe3efca435.png

cfcef7cac968fd4036e806d65eda2844.png 3449020c2534c4116e83e0343c722a64.png

2.组建邮件

445bd42917b8fc440953b211337581d4.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 3449020c2534c4116e83e0343c722a64.png

3.发送邮件

445bd42917b8fc440953b211337581d4.png

首先需要连接邮件服务器。服务器地址已定义过,端口号为25。

server=smtplib.SMTP(mail_host,25)

连接到服务器之后接着进行登录,使用到的参数有发件人邮箱地址和授权码。

server.login(mail_user, mail_pass)

最后一步,发送。其中设置发件人、收件人和字符串的形式发送。

server.sendmail(mail_user,[ receiver,], message.as_string())
cfcef7cac968fd4036e806d65eda2844.png 3449020c2534c4116e83e0343c722a64.png

4.退出服务系统

445bd42917b8fc440953b211337581d4.png

需要注意的是,需要同时退出才能发送成功。

server.quit()

下面是发送结果:

2671550ddc491ef94b10536143a108bd.png

c833b2fc69b7c33f6ccdc7bd061cde24.png

cfcef7cac968fd4036e806d65eda2844.png 3449020c2534c4116e83e0343c722a64.png

完整代码

445bd42917b8fc440953b211337581d4.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

d036e6768616790b1ffe3c9c21a756a9.gif

文字来源|程威

图片|程威

编辑|邵艳红

审核|宋欣蕊

欢迎投稿至:Datahelpclub@126.com  

欢迎大家转发,但大家记得标明原创出处哟~如果喜欢记得点【在看】呀~扫描关注我们的公众号↓

94931cc4d225e7706bf38d7b0a6f224e.png

我就知道你在看!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值