original message : 地址已在使用_Python | 教你如何使用Python发邮件——SMTP发送邮件...

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

0269dbac5d2cee95fff4d98d32691001.gif

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

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

c08171d57b779f0ce50d85c381b1a958.png

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

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

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

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

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

4ff45277e6ba2a7da478a8815764f29f.png 81119e6b68bddbf84128f424d8e08f3b.png 1.配置发件人邮箱 2332cff8b63768cc9c46601aff3e5aec.png

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

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

9214e6138c1d78408f95d4af8e9795ae.png

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

028d3f54e885c3afd62df1022a37d76b.png

4ff45277e6ba2a7da478a8815764f29f.png 81119e6b68bddbf84128f424d8e08f3b.png

2.组建邮件

2332cff8b63768cc9c46601aff3e5aec.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']=" 鸡你太美~" 

到此为止,一个简单的邮件就组建完成啦!

4ff45277e6ba2a7da478a8815764f29f.png 81119e6b68bddbf84128f424d8e08f3b.png

3.发送邮件

2332cff8b63768cc9c46601aff3e5aec.png

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

server=smtplib.SMTP(mail_host,25)

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

server.login(mail_user, mail_pass)

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

server.sendmail(mail_user,[ receiver,], message.as_string())
4ff45277e6ba2a7da478a8815764f29f.png 81119e6b68bddbf84128f424d8e08f3b.png

4.退出服务系统

2332cff8b63768cc9c46601aff3e5aec.png

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

server.quit()

下面是发送结果:

eded0aab63f78ed227b3459938b9348f.png

57c64e29a62203a48189224c9fe550f8.png

4ff45277e6ba2a7da478a8815764f29f.png 81119e6b68bddbf84128f424d8e08f3b.png

完整代码

2332cff8b63768cc9c46601aff3e5aec.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

e0b8450e6ca40fe87ae98a833893c984.gif

文字来源|程威

图片|程威

编辑|邵艳红

审核|宋欣蕊

欢迎投稿至:Datahelpclub@126.com  

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

33533218c64fc63c5684032fce82c417.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值