...邮件服务器_手把手教你使用Python轻松搞定发邮件
python搭建邮件服务器_⼿把⼿教你使⽤Python轻松搞定发邮
前⾔
现在⽣活节奏加快,⼈们之间交流⽅式也有了天差地别,为了更加便捷的交流沟通,电⼦邮件产⽣了,众所周知,电⼦邮件其实就是客户端和服务器端发送接受数据⼀样,他有⼀个发信和⼀个收信的功能,电⼦邮件的通信协议为SMTP ,POP3,IMAP,⽽且他们都属于tcp/ip协议,像我们经常⽤到的QQ邮箱,⽹易邮箱,这些都是同样的模式。
准备
编辑器:sublime text 3
模块:smtplib和email
项⽬实施
1.安装
初二数学教学计划
pip install smtplib
pip install email
注:这⾥有⼀个⼩坑,就是安装smtplib不能像上⾯那样直接安装,那样会安装不上的,你得先安装PyEmail,因为你smtplib 集成在了这个模块中了,就好⽐pillow模块集成在PIL中⼀样的,另⼀个正常安装即可。
2.开通pop3 SMTP imap 服务了解邮箱授权码
任何⼀个邮箱你如果想要发邮件,你得先开通以上服务,让邮件能够通信,⽽且还得有邮箱授权码,⽐如说QQ邮箱:
打开QQ邮箱,选择设置--------账户,然后开启服务。
开启服务后,点击⽣成授权码,保存好授权码。获取授权码只需要你⽤注册⼿机号发短信或者动态令牌即可。
3.构建邮件端⼝,建⽴连接
import smtplib
sm=smtp.SMTP()  # 初始化连接
sm.login('邮箱账号','邮箱密码/授权码')  #登陆账户
sm.sendmail('邮件发送⽅','邮件接受⽅','邮件内容') #发送邮件
sm.quit() #关闭连接,结束邮件服务
了解了以上的知识后,我们来试着登陆⼀下吧,我以QQ邮箱为例:
有这样的标识表⽰登陆成功,顺便强调⼀句,在这⾥我为什么没有配置邮件服务器端⼝,因为服务器已经帮我们配置好了,默认的都是25号端⼝,如果你担⼼邮件的安全问题,⽐如会被⿊客截胡,你也可以使⽤ssl链接传输:
同样它的端⼝也是默认配置好了,他的端⼝号为465,为了安全,咱们选择这项。
4.构建邮件内容部分
这⾥我们需要⽤到email模块,我们都知道,邮件⼀般可以发很多东西,⽐如说⽂本,图⽚,⽂件等等,
那么我们来看看吧。
节假日放假⼀、⽂本
导⼊模块
import MIMEText
填充⽂本
在此之前我们得知道它的具体⽤法:
MIMEText(‘邮件内容’,‘类型’, '编码')
矜怎么读
邮件内容为字符串
类型: text/plain text/html
编码 : utf-8 gbk
构造⽂本
MIMEText('hello','text/plain','utf-8')
构造超⽂本
MIMEText('点击此处有惊喜','text/html','utf-8')
下⾯我们来实际操作下吧。
⾮常成功收到了邮件了。正是2091500484这个邮箱给我发的。当然我们这样只是实现了最简单的功能,
我们需要将它格式规范下,⽐如给它添加个开头结尾什么的。我们需要导⼊构建邮件完整内容的模块:
fromemail.header import Header
然后设置头部,内容,尾部
msg1['From']=Header('你是猪吗')  #设置发件⼈昵称
msg1['To']=Header('hwhrr123321@163') #设置收件⼈昵称
msg1['Subject'] = Header('我是猪') #设置标题
可以看到,是不是觉得很有趣了,快来试试吧,哈哈哈。。。
⼆、图⽚
发了⽂本后我们还想发⼀张图⽚,那该怎么办呢?莫慌,此时需要先导⼊发图⽚的模块:
fromemail.mime.image import MIMEImage
然后我们在读取图⽚⽂件将它添加到邮件中去。
ff=open('1.jpg','rb').read() #打开⽂件
fd=MIMEImage(ff,'subtype')    #初始化
fd.add_header('Content-ID','1.jpg')  #添加到头部
可以看到图⽚并没有显⽰出来,那么这是怎么回事,哦,原来图⽚是依托附件⽽存在的,要么是html要么是附件,但是两者都需要附件模块的⽀持,下⾯我们导⼊附件模块:
fromemail.mime.multipart import MIMEMultipart
1.将图⽚插⼊到html中
也就是将图⽚插⼊到正⽂部分,⽽⾮附件的形式。
msg3 = MIMEMultipart('related')
msg3['From'] ='你是猪吗'
msg3['To'] ='hwhrr123321@163'
msg3['Subject'] ='我是猪'
msg4 = MIMEMultipart('alternative') #构建⼀个附件
msg3.attach(msg4)  #将附件引⼊到另⼀个附件
text="""
"""
msg4.attach(MIMEText(text, 'html','utf-8')) #将html插⼊到附件中
ff=open('2.jpg','rb')
img = ad())  #将图⽚读取到附件中
ff.close()
差不多先生歌词img.add_header('Content-ID','') #添加图⽚头部
msg3.attach(img)  #将图⽚添加到附件
sm.sendmail('2091500484@qq','hwhrr123321@163',msg3.as_string()) #发送
sm.quit()
可以看出,过程还是⽐较复杂的,⽐单纯附件添加图⽚⿇烦点,主要是嵌套了⼀层附件结构。
扬沙是什么天气2.将图⽚引⼊到附件中
这个⽐较好实现。如图:
三、⽂件
在发送⽂件前,我们要考虑的⼀个问题是,我们读取它要以⼆进制的形式,然后再将它添加到附件中,搞懂了这个就好办了。
1.读取⽂件
这⾥我们需要构造⼀个base64的⼀个数据流读取⽂件:
msg6=MIMEMultipart()
txt=MIMEText(open('fd.txt','rb').read(),'base64','utf-8')
2.设置传输类型
txt["Content-Type"] ='application/octet-stream'
3.设置附件名称
txt["Content-Disposition"] ='attachment; filename = "fd.txt" '
4.将⽂件添加到附件中
msg6.attach(txt)
最后就成功将⽂件添加到了附件中了。
项⽬总结
以上便是我对邮件发送的所有感悟了,另外如果你想将邮件传输时的过程直观展⽰出来的话只需在邮件服务器登陆的前⼀句加上:
sm.set_debuglevel(1)
这样便可以将所有传输过程打印在终端了。通过对邮件的学习,可以极⼤地便利我们的⽣活,你可以使⽤邮件来给你设置⼀个计划表,通过程序实现,每天按时发送邮件,是不是很⾼逼格了,希望今天这篇⽂章能让⼤家对邮件有个全新的认识。
>买二手房流程

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。