百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

风变编程-python基础语法-第17关用python发邮件

liuian 2025-06-12 14:13 115 浏览


复习一下上一关的内容 ,模块的相关知识,以及学习模块的方法(2图)

得了,我们可以开始今天的项目实操了

1. 明确项目目标

这一关的主题,其实最早是来源于往期学员的一个问题:学员小贾是一名外贸人员,每到了节假日,要给客户发祝福邮件。

虽然现在群发邮件比较方便,但还是要每次手动添加收件人的邮箱。小贾想:要是能够自动发送邮件给这些人就好了。他找到了助教求助。

之前跟你聊过,希望学习Python知识,是能够帮助大家解决实际问题的。而小贾的问题,就是一个可以完美地被Python解决的需求,而且在职场中也是一个普遍存在的需求。

为了完成这个项目呢,我们要学会自学新的模块

2. 分解过程,拆解项目

我们可以把这个项目拆解成三个版本,各个版本功能逐步完善 。如图示

3. 逐步执行,代码实现

3.1 版本1.0:学习模块,发一封简单邮件

3.1.1搜索模块资料

在编程世界中,我们不需要什么知识都一把抓,而是遇到问题之后,产生了某种需求,才会去找对应的解决方案。

这个方案可能是某个模块,也可能是某个函数~

经过搜索大法后,我们可以知道需要实现这一版本的功能需要用到python的两个内置模块 smtplib,email

可以初步画一下这个简单的结构图 ,如图示

这里在搜索的时候跟你们说个技巧吧,比如你想要找到stmplib 这个 模块,那么你搜索‘stmplib python’,如果你英文足够好的话,那你可以去看官方文档,如果你只喜欢看中文的话,我建议你去这个网站去搜索资料 ‘CSDN博客’,这个网站上有最优秀和经验最丰富的码师可以交流,他们的很多博客也可以借鉴、参考。

这是我费了很大力气找到的smtplib的方法 ,如图示

我们可以看到,为了减少变量重复出现的次数,一般将 smtplib.SMTP() 赋值给server,我本身也认同这样的办法

这里给大家简单科普一下,SMTP (Simple Mail Transfer Protocol)翻译过来是“简单邮件传输协”的意思,SMTP 协议是由源服务器到目的地服务器传送邮件的一组规则。

可以简单理解为:我们需要通过SMTP指定一个服务器,这样才能把邮件送到另一个服务器。

第四行代码,就是干这个工作的,连接(connect)指定的服务器。

host是指定连接的邮箱服务器,你可以指定服务器的域名。通过搜索“xx邮箱服务器地址”,就可以找到。

port 是“端口”的意思。端口属于计算机网络知识里的内容,你可以自行搜索了解,现在我们只要知道它是一个【整数】即可。

我们需要指定SMTP服务使用的端口号,一般情况下SMTP默认端口号为25。

风变编程官网的服务器名称是mail.forchange.tech,端口是587。

3.1.2 用QQ做案例讲解

因为一般二十几岁的年轻人使用最多的还是QQ邮箱,所以我会以QQ邮箱作为讲解例子

QQ 邮箱采用的加密方式是SSL,我们需要写成这样:如图示

然后接下来我要讲一个tips,其实我们一般qq邮箱默认是关闭SMTP服务的,你需要自行手动开启,进入你的QQ邮箱后,点击位于顶部的【设置】按钮,选择【账户设置】,进入到这个界面,如图示,蓝色方框的那个要保持开启,照着他的流程做便可以开启

成功开启以后,网页会给你一个授权码,把它保存下来,接下来的代码中,发邮件的时候用到的是授权码,而不是你的QQ密码了。它是4*4=16位的,也就是**** **** **** **** 这样的,还有不要随意泄露,不然的话可能会被癫佬拿去打广告。

好了,一步一步讲解代码

login是登录的意思,也就是登录你指定的服务器用的,需要输入两个参数:登录邮箱和授权码。如图示

把两个参数放在最前面。这部分的代码我们也可以写出来了:如图示

第六行代码sendmail是“发送邮件”的意思,是发送邮件用的,sendmail()方法需要三个参数:发件人,收件人和邮件内容。如图示

msg.as_string()是一个字符串类型:as_string()是将发送的信息msg变为字符串类型。最后一行代码,quit是“退出”的意思,就是退出服务器。

3.1.3 对smtplib 做一个初步总结,如图示

3.1.4 email 模块

email 模块:也就是用来写邮件内容的模块。这个内容可以是纯文本、HTML内容、图片、附件等多种形式。如图示

每种形式对应的导入方式是这样的:如图示

这里再次给大家科普一下,

你可以复制上面的内容到本地的编辑器上,按住 ctrl 点击查看含义。

请你按住ctrl同时点击mime,你会看到一个名为init.py的空文件,这说明 email是其实是一个“包”。当然,并不是“包治百病”的那个“包”。

这就要谈到“模块”和“包”的区别了,模块(module)一般是一个文件,而包(package)是一个目录,一个包中可以包含很多个模块,可以说包是“模块打包”组成的。

但为什么看到那个空文件,就能知道email是包呢?这是因为Python中的包都必须默认包含一个init.py的文件。

init.py控制着包的导入行为。假如这个文件为空,那么我们仅仅导入包的话,就什么都做不了。所以直接import email是行不通的。

所以,我们就需要使用from … import …语句,从email包目录下的【某个文件】引入【需要的对象】。比如从email包下的text文件中引入MIMEText方法。中文说起来有点复杂,看代码就懂了:如图示

通过简单的学习,我们就能发现MIMEText()方法需要输入三个参数:文本内容,文本类型和文本编码。如图示

文本类型和文本编码,我们默认用'plain'和'utf-8'。文本内容,我就写一句最简单的“send by python”吧,你可以写自己想写的话啦。如图示

3.1.5综合两个模块的代码结构为,如图示

那么细致化结构接就是,如图示

3.1.6 那么版本1.0 的代码为,(带注释)两图

这里再给大家科普一下啊,就是如果你的python版本 是3.7 以上的,可能会报错,

ValueError: server_hostname cannot be an empty string or start with a leading dot.

因为Python 3.7修改了ssl.py,导致smtplib.SMTP_SSL也连带产生了问题。那你需要这样子做,如图示

经过九牛二虎之力,我终于是收到了人生第一封由python发来的QQ邮件,如图示

说实话,自己还感觉挺不可思议的

3.2 版本2.0:给自己发一封完整邮件

3.2.1 完整的邮件就是说,增加多两个功能,完善一下。如图示

我们要增加这几行代码,如图示

第一行代码,从email包引入Header()方法。Header()是用来构建邮件头的。标准邮件需要三个头部信息:From , To 和 Subject ,第三到五行代码就提供了这三个信息。这里我们可以自定义,比如from发件人邮箱地址,to收件人邮箱地址,主题“python test”。

等我们增加了邮件头的代码后,收到邮件会有所不同,如图示

而且你还可以定义,如图示

原本邮件内容是写在这里:如图示

如果你想要写很长的内容,建议先设置一个变量text用来放正文内容。如图示

3.2.2 所以版本2.0 的最终代码为,如图示(3图)

3.3 版本3.0:群发完整邮件

3.3.1 这里主要讲解一下,用python群发邮件的三种方法,如图示

一,是将收件人信箱的变量设置成一个可以装多个内容的列表:需要注意的是,to_addrs变量也将作为参数被传入Header方法中:

直接运行程序的话,这里就会发生错误:AttributeError: 'list' object has no attribute 'decode'。

我们要将to_addrs变成一个字符串,将列表变成一个字符串,这个时候我们就要用到join()函数了

一分钟回顾一下join()函数的用法,大家看案例代码 ,代码以及运行结果如图示

join()的用法是str.join(sequence)

二,接下来是while循环,代码以及运行结果如图示

三,将邮箱地址写入csv模块的方法是write(),步骤是:1.引入csv模块;2.提供需要写入csv文件的数据,3.建文件并写入。代码如图示

好了,关于python发邮件的全部知识就讲解到这了。

4. 1 第17关课后练习-自制二维码

练习介绍

练习目标

我们会通过今天的作业,学习一个新的模块:MyQR,制作一个动态二维码。

练习要求

在昨天的练习里,你已经可以通过自己的学习,完成代码的升级。

所以,今天我们不妨多做些新的尝试。

这次的练习,没有提示,没有准备好的网址。

需求很明确:请你在本地编辑器(如vscode、Pycharm),用 Python 制作一个动态二维码。

所以,请你运用在课堂上看到的提示和知识,去思考,去搜索,去学习,完成今天的练习。

代码实操

你应该已经知道了这个模块是:MyQR,也能读懂相关的代码。

请你自学相关模块知识后,自行下载一个gif,然后在本地编辑器(如vscode、Pycharm)完成代码吧。

因为系统里无法展示最后的动态二维码,当你在本地编辑器完成代码并运行成功后,直接点击右侧的运行进入下一步即可。

对了,不要忘了先安装myqr模块,Windows终端里运行'pip install myqr',Mac终端运行'pip3 install myqr'

示例代码以及运行结果如图示(2图)

这个生成的二维码就是风变编程官网的链接


4.2 进阶练习-绝对值得多种求法

练习介绍

练习目标:

通过这个练习,你至少可以用3种方法去求某个数的绝对值。

练习要求:

请你通过搜索和步骤中的提示,用不同的方法求绝对值。

建议将其封装成函数,如“abs_value1()”。


——Directly made by 潜·2·index-crossing

相关推荐

驱动网卡(怎么从新驱动网卡)
驱动网卡(怎么从新驱动网卡)

网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...

2026-01-30 00:37 liuian

win10更新助手装系统(微软win10更新助手)

1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...

windows11专业版密钥最新(windows11专业版激活码永久)

 Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...

手机删过的软件恢复(手机删除过的软件怎么恢复)
手机删过的软件恢复(手机删除过的软件怎么恢复)

操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...

2026-01-29 23:55 liuian

一键ghost手动备份系统步骤(一键ghost 备份)

  步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。  步骤...

怎么创建局域网(怎么创建局域网打游戏)

  1、购买路由器一台。进入路由器把dhcp功能打开  2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。  3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...

精灵驱动器官方下载(精灵驱动手机版下载)

是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...

一键还原系统步骤(一键还原系统有哪些)

1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。  2、在弹出的“准备安装”窗口中,可...

电脑加速器哪个好(电脑加速器哪款好)

我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...

任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)

是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...

u盘怎么恢复文件(u盘文件恢复的方法)

开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...

系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)

1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...

剪贴板权限设置方法(剪贴板访问权限)
剪贴板权限设置方法(剪贴板访问权限)

1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...

2026-01-29 21:37 liuian

平板系统重装大师(平板重装win系统)

如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...

联想官网售后服务网点(联想官网售后服务热线)

联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...