目录
前言" >前言
准备" >准备
项目实施" >项目实施
1.安装" >1.安装
2.开通pop3 SMTP imap 服务了解邮箱授权码" >2.开通pop3 SMTP imap 服务了解邮箱授权码
3.构建邮件端口,建立连接" >3.构建邮件端口,建立连接
4.构建邮件内容部分" >4.构建邮件内容部分
一、文本" >一、文本
二、图片" >二、图片
2.将图片引入到附件中" >2.将图片引入到附件中
三、文件" >三、文件
1.读取文件" >1.读取文件
2.设置传输类型
" >2.设置传输类型
3.设置附件名称
" >3.设置附件名称
4.将文件添加到附件中
" >4.将文件添加到附件中
项目总结" >项目总结
首页 后端开发 Python教程 手把手教你使用Python轻松搞定发邮件

手把手教你使用Python轻松搞定发邮件

Aug 15, 2023 pm 02:56 PM
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邮箱,选择设置--------账户,然后开启服务。

手把手教你使用Python轻松搞定发邮件

手把手教你使用Python轻松搞定发邮件

    开启服务后,点击生成授权码,保存好授权码。获取授权码只需要你用注册手机号发短信或者动态令牌即可。


3.构建邮件端口,建立连接

import smtplib
sm=smtp.SMTP()  # 初始化连接
sm.connect('邮件服务器地址','端口')  #建立连接
sm.login('邮箱账号','邮箱密码/授权码')  #登陆账户
sm.sendmail('邮件发送方','邮件接受方','邮件内容') #发送邮件
sm.quit() #关闭连接,结束邮件服务
登录后复制

    了解了以上的知识后,我们来试着登陆一下吧,我以QQ邮箱为例:

手把手教你使用Python轻松搞定发邮件

有这样的标识表示登陆成功,顺便强调一句,在这里我为什么没有配置邮件服务器端口,因为服务器已经帮我们配置好了,默认的都是25号端口,如果你担心邮件的安全问题,比如会被黑客截胡,你也可以使用ssl链接传输:

手把手教你使用Python轻松搞定发邮件

同样它的端口也是默认配置好了,他的端口号为465,为了安全,咱们选择这项。


4.构建邮件内容部分

这里我们需要用到email模块,我们都知道,邮件一般可以发很多东西,比如说文本,图片,文件等等,那么我们来看看吧。

一、文本

导入模块

from email.mime.text import MIMEText
登录后复制
填充文本
登录后复制

在此之前我们得知道它的具体用法:

MIMEText(‘邮件内容’,‘类型’, '编码')

邮件内容为字符串

类型: text/plain text/html

编码 : utf-8 gbk

构造文本

MIMEText('hello','text/plain','utf-8')
登录后复制
构造超文本
登录后复制
MIMEText(&#39;<a href=&#39;www.baidu.com&#39;>点击此处有惊喜</a>&#39;,&#39;text/html&#39;,&#39;utf-8&#39;)
登录后复制

下面我们来实际操作下吧。

手把手教你使用Python轻松搞定发邮件

手把手教你使用Python轻松搞定发邮件

非常成功收到了邮件了。正是2091500484这个邮箱给我发的。当然我们这样只是实现了最简单的功能,

我们需要将它格式规范下,比如给它添加个开头结尾什么的。我们需要导入构建邮件完整内容的模块:

from email.header import Header
登录后复制
    然后设置头部,内容,尾部
登录后复制
msg1[&#39;From&#39;]=Header(&#39;你是猪吗&#39;)  #设置发件人昵称msg1[&#39;To&#39;]=Header(&#39;hwhrr123321@163.com&#39;) #设置收件人昵称msg1[&#39;Subject&#39;] = Header(&#39;我是猪&#39;) #设置标题
登录后复制

手把手教你使用Python轻松搞定发邮件

可以看到,是不是觉得很有趣了,快来试试吧,哈哈哈。。。


二、图片

发了文本后我们还想发一张图片,那该怎么办呢?莫慌,此时需要先导入发图片的模块:

from email.mime.image import MIMEImage
登录后复制
    然后我们在读取图片文件将它添加到邮件中去。
登录后复制
ff=open(&#39;1.jpg&#39;,&#39;rb&#39;).read() #打开文件fd=MIMEImage(ff,&#39;subtype&#39;)    #初始化fd.add_header(&#39;Content-ID&#39;,&#39;1.jpg&#39;)  #添加到头部
登录后复制

手把手教你使用Python轻松搞定发邮件

可以看到图片并没有显示出来,那么这是怎么回事,哦,原来图片是依托附件而存在的,要么是html要么是附件,但是两者都需要附件模块的支持,下面我们导入附件模块:

from email.mime.multipart import MIMEMultipart
登录后复制
1.将图片插入到html中
登录后复制

也就是将图片插入到正文部分,而非附件的形式。

msg3 = MIMEMultipart(&#39;related&#39;)msg3[&#39;From&#39;] = &#39;你是猪吗&#39;msg3[&#39;To&#39;] = &#39;hwhrr123321@163.com&#39;msg3[&#39;Subject&#39;] = &#39;我是猪&#39;msg4 = MIMEMultipart(&#39;alternative&#39;) #构建一个附件msg3.attach(msg4)  #将附件引入到另一个附件text="""   <html>   <body>   <img src=&#39;cid:img&#39; tittle=&#39;I am  pig&#39;>   </body>   </html>"""msg4.attach(MIMEText(text, &#39;html&#39;, &#39;utf-8&#39;)) #将html插入到附件中ff=open(&#39;2.jpg&#39;,&#39;rb&#39;)img = MIMEImage(ff.read())  #将图片读取到附件中ff.close()img.add_header(&#39;Content-ID&#39;,&#39;<img>&#39;) #添加图片头部msg3.attach(img)   #将图片添加到附件sm.sendmail(&#39;2091500484@qq.com&#39;,&#39;hwhrr123321@163.com&#39;,msg3.as_string()) #发送sm.quit()
登录后复制

可以看出,过程还是比较复杂的,比单纯附件添加图片麻烦点,主要是嵌套了一层附件结构。

手把手教你使用Python轻松搞定发邮件

2.将图片引入到附件中

这个比较好实现。如图:

手把手教你使用Python轻松搞定发邮件


三、文件

在发送文件前,我们要考虑的一个问题是,我们读取它要以二进制的形式,然后再将它添加到附件中,搞懂了这个就好办了。

1.读取文件

这里我们需要构造一个base64的一个数据流读取文件:

msg6=MIMEMultipart()txt=MIMEText(open(&#39;fd.txt&#39;,&#39;rb&#39;).read(), &#39;base64&#39;, &#39;utf-8&#39;)
登录后复制
2.设置传输类型
txt["Content-Type"] = &#39;application/octet-stream&#39;
登录后复制
3.设置附件名称
txt["Content-Disposition"] = &#39;attachment; filename = "fd.txt" &#39;
登录后复制
4.将文件添加到附件中
msg6.attach(txt)
登录后复制

最后就成功将文件添加到了附件中了。

手把手教你使用Python轻松搞定发邮件


项目总结

以上便是我对邮件发送的所有感悟了,另外如果你想将邮件传输时的过程直观展示出来的话只需在邮件服务器登陆的前一句加上:

sm.set_debuglevel(1)
登录后复制

    这样便可以将所有传输过程打印在终端了。通过对邮件的学习,可以极大地便利我们的生活,你可以使用邮件来给你设置一个计划表,通过程序实现,每天按时发送邮件,是不是很高逼格了,希望今天这篇文章能让大家对邮件有个全新的认识。

以上是手把手教你使用Python轻松搞定发邮件的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

sublime怎么运行代码python sublime怎么运行代码python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中运行 Python 代码,需先安装 Python 插件,再创建 .py 文件并编写代码,最后按 Ctrl B 运行代码,输出会在控制台中显示。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

Golang vs. Python:性能和可伸缩性 Golang vs. Python:性能和可伸缩性 Apr 19, 2025 am 12:18 AM

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

vscode在哪写代码 vscode在哪写代码 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中编写代码简单易行,只需安装 VSCode、创建项目、选择语言、创建文件、编写代码、保存并运行即可。VSCode 的优点包括跨平台、免费开源、强大功能、扩展丰富,以及轻量快速。

notepad 怎么运行python notepad 怎么运行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中运行 Python 代码需要安装 Python 可执行文件和 NppExec 插件。安装 Python 并为其添加 PATH 后,在 NppExec 插件中配置命令为“python”、参数为“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通过快捷键“F6”运行 Python 代码。

See all articles