【Python 】20行代码,实现自动发送邮件

article/2025/10/5 0:56:00

快下班了,今天给大家分享一下,平常我都是怎么发送电子邮件,这个方法能够帮助大家提高工作效率、,摆脱繁重的重复性工作。一般我都会借用Python来实现自动化邮件发送,相信你用过这个方法之后就会爱上它。(资料在这)

在这里插入图片描述

Python有两个内置库:smtplib和email,能够实现邮件功能,smtplib库负责发送邮件,email库负责构造邮件格式和内容。

在这里插入图片描述

01思路

使用脚本发送邮件的思路其实和客户端发送邮件一样,过程都是:

登录 —> 写邮件 —> 发送

在这里插入图片描述

02代码编写

与Python相关的邮件发送库有这几个:

smtplib

是关于 SMTP(简单邮件传输协议)的操作模块,在发送邮件的过程中起到服务器之间互相通信的作用。

email

简单来说,即服务器之间通信的信息,包括信息头、信息主体等等。

举个简单的例子,当你登录邮箱,写好邮件后点击发送,这部分是由 SMTP 接管;而写邮件、添加附件是由 email 模块控制。

在这里插入图片描述

1、先导入相关的库和方法

#负责通信
import smtplib
#负责构造文本
from email.mime.text import MIMEText
from email.header import Header

2、设置邮箱域名、发件人邮箱、邮箱授权码、收件人邮箱

#邮箱域名,这里用的QQ邮箱发送
host = 'smtp.qq.com'
#port = 25  #或者使用默认的端口号25
#发送者邮箱账号
username = '11********7@qq.com'
#授权码 注意,此处必须填写授权码,不同邮件的获取方法大体相同,参考百度。
password = 'to*************ei'#接收者邮箱账号,多个接收者,构造list即可。
to_addrs = ['xi.l**@*******.com','xi.hi**@*******.com']#构造正文,也就是内容
text = '''这是一封Python自动发送的邮件'''
#以下是构造证明,邮件主题、发送者姓名、接收者姓名等。
msg = MIMEText(text,'plain','utf-8')
msg['Subject'] = Header('发给自己的测试邮件')
msg['From'] = Header('Hill Luo')
msg['To'] = Header(','.join(to_addrs))
#如需抄送,可使用Cc进行抄送
# msg['Cc'] = Header(','.join(to_addrs))

在这里插入图片描述

3、发送邮件

 # 创建SMTP对象server = smtplib.SMTP_SSL(host)#设置发件人邮箱的域名和端口,端口地址为25server.connect(host, 465)#登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码server.login(username, password)   print('开始发送')#发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为strserver.sendmail(username,  to_addrs, msg.as_string())print('邮件发送成功') # 关闭SMTP对象server.quit()

4、结果

我们来看看Python发送的邮件是什么样的:

在这里插入图片描述

在这里插入图片描述

*划重点:

一些邮箱登录比如 QQ 邮箱需要 SSL 认证,所以 SMTP 已经不能满足要求,而需要SMTP_SSL,解决办法为:

 #常规方式server = smtplib.SMTP()#连接到服务器server .connect(mail_host,25)  # SSL认证方式server= smtplib.SMTP_SSL(mail_host)#连接到服务器,端口改为465server .connect(mail_host,465)

5、最后

通过上面的代码,想必大家已经对发邮件有了基本的认识。

从整体上我们要把握整个过程的思路:

1.登录

2.写邮件

3.发送

微观上我们需要了解:

•smtplib/email 模块的代码规则;

•什么时候使用 SMTP,什么时候使用 SMTP_SSL?

•…

好了,到这里就没有了,这一个小案例还是特别简单的,学废了吗?下一章再见了。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/lErkMNHg.shtml

相关文章

Python 自动发送邮件实战案例,人人都可以学会

自动发送邮件能应用于许多场景,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了。为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢&#xf…

干货 | 解放双手,用Python实现自动发送邮件

使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间。 Python有两个内置库:smtplib和email,能够实现邮件功能,smtplib库负责发送邮件,email库负责构造邮件格式和内容。 邮件发…

小区物业管理系统设计与开发论文

目录 第1章 需求规格说明书... 1 1.1 目的... 1 1.2 系统概述... 1 1.3 系统总体功能描述... 1 1.4 运行环境... 2 1.5 系统角色分工... 2 1.5.1xxx模块功能描述.. 4 1.5.2 xxx模块功能描述.. 5 1.5.3 xxx模块功能描述... 5 1.5.4 xxx模块功能描述... 6 第2章 系统设计说明书..…

基于安卓 android studio的考试APP开发设计 前台和后台管理系统

一 项目概述 考试APP系统分为前台APP端和后台管理系统,前台APP可以注册,登录,试卷列表,开始测试,个人中心,试卷打分,试题解析,退出系统,后台管理系统 主要有 老师注册 登…

产品开发的组织架构和开发管理

摘要:产品开发的组织架构和产品开发过程管理是一个软件企业开发管理的两个侧面,开发组织架构指软件项目的立项和项目开发有效的人员调配和组织,开发过程管理指在项目确定后,软件开发过程的管理。本文根据作者在建立软件企业管理体…

图书馆管理系统的开发

课程设计的目的与要求 课程设计目的软件工程课程设计是学习软件工程课程后所进行的实践环节,目的是培养学生用工程化的思想和标准文档化的思想进行软件开发。本次课程设计通过开发一个小型实用的软件系统,亲身体验软件生命周期中的各个环节,以加深对软件工程课程的深入理解、…

微信小程序 一键授权 给第三方平台代开发管理(一,创建第三方平台)

不是重点,可以忽略: 本人 七月的胜利。代表七月份我出生啦,嘻嘻 博客就是平常记录一些常用到的开发常用到的技术,方法等,看见好东西了就自己整理一下防止以后自己遇到了再找不到。 如果有幸帮到你,欢迎点赞…

使用go语言开发运维管理平台

前言 经过对go语言的一段时间学习,打算实践一下,正好公司缺个运维平台,于是我就对Zeus二次开发,完成了一个初步的效果,在这里分享给大家,大家有什么建议可以提出来哈,一起进步 采用技术 前端&am…

微信小程序云开发实践--搭建一个管理小程序

概述 : 开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即…

基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统

你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,或者没有积分想获取项目,欢迎指教: 企鹅:869192208 文章目录 一、开发背景二、 需求分析三、开发环境四、运行效果五、开发流程工程目…

用Django半天时间开发一个员工管理系统实例教程分享

熟悉python的朋友都知道,django简直是web开发领域的一个大杀器。 请求、模板、ORM、admin 都自带,程序员可以很轻松的开发出一个网站或者管理系统。 今天小编给大家分享一个超简单的员工管理系统 源码地址: https://github.com/newpanjin…

微信小程序云开发-内容管理系统(CMS)小案例

一、前言 最近有朋友问到如何在CMS上实现审核小程序端提交的数据,例如发布的内容审核,订单审核等等。因而出一篇小案例。 二、原理说明 这个由腾讯开源的这个内容管理系统,实际上就是对于云开发数据库的可视化操作(又或者说其实…

使用微信提供的云开发实现后端 微信小程序云开发的内容管理CMS

以前开发一款小程序或者应用啥的,首先就是申请域名租服务器,这是必不可少的步骤。 现在小程序云开发出来后,又再出现内容管理的这个功能,对于开发一款简单的小程序来说,真的是太简单的了。 现成的后台直接配置&#…

新能力 | 云开发CMS内容管理系统,5分钟搞定小程序管理后台

小程序云开发的云调用能力,让用户可以免鉴权快速调用微信的开放能力,极大节约了开发成本。现在,大家期待已久的云开发 CMS 内容管理系统,终于上线啦!顺便提示,接下来还可以二次开发哦! 云开发 …

[敏捷开发]研发管理 开发过程管理

开发过程管理,主要面向开发人员的管理。其核心目的,是通过一个项目管理软件,来管理不同项目,然后通过项目的里的工作项,了解开发人员的工作量,效率,从而来管理开发人员,合理调配开发…

Arduino常用的附加开发版管理器网址

20211004更新 增加ESP32 常用的附加开发版管理器网址 ESP32 https://dl.espressif.com/dl/package_esp32_index.json 如果使用ESP32-SOLO要用这里的编译文件替换源文件 https://github.com/lbernstone/arduino-esp32-solo 替换位置 C:\Users\你的用户名\AppData\Local\Ar…

基于vue的后台管理系统开发

如果要快速开发一套基于vue的后台管理系统,你可以手动从0到1动手撸,也可以基于现有的vue的后台管理系统模版进行开发。 github上有几套关注度比较的vue后台管理系统模版[1]: vue-element-admin[2]vue-admin[3]vue-manage-system[4]iview-admi…

微信小程序 —— 成员管理及开发管理

引入 要理解微信小程序的成员管理,首先要理解微信小程序的注册。 微信小程序的注册需要用户提供一个邮箱作为登录账号,并绑定一个微信号作为管理员。登录账号会得到一个官方提供的appid作为标识码,作为登录账号的凭证。微信小程序登录账号与…

软件开发项目管理经验总结

这是我从事软件外包工作以来的项目管理经验的总结,编写文章的目的是为了回顾和总结自己的一些想法,如果其中有不足的地方大家可以一起讨论交流。 项目经理的职责 关于项目经理的工作职责有很多种说法,我自己是这样理解的作为一名项目经理第一…