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

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

使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间。

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

邮件发送需要遵守SMTP协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

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

import smtplib
import email
# 负责构造文本
from email.mime.text import MIMEText
# 负责构造图片
from email.mime.image import MIMEImage
# 负责将多个对象集合起来
from email.mime.multipart import MIMEMultipart
from email.header import Header

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

# SMTP服务器,这里使用163邮箱
mail_host = "smtp.163.com"
# 发件人邮箱
mail_sender = "******@163.com"
# 邮箱授权码,注意这里不是邮箱密码,如何获取邮箱授权码,请看本文最后教程
mail_license = "********"
# 收件人邮箱,可以为多个收件人
mail_receivers = ["******@qq.com","******@outlook.com"]

3、构建MIMEMultipart对象代表邮件本身,可以往里面添加文本、图片、附件等

mm = MIMEMultipart('related')

4、设置邮件头部内容

# 邮件主题
subject_content = """Python邮件测试"""
# 设置发送者,注意严格遵守格式,里面邮箱为发件人邮箱
mm["From"] = "sender_name<******@163.com>"
# 设置接受者,注意严格遵守格式,里面邮箱为接受者邮箱
mm["To"] = "receiver_1_name<******@qq.com>,receiver_2_name<******@outlook.com>"
# 设置邮件主题
mm["Subject"] = Header(subject_content,'utf-8')

5、添加正文文本

# 邮件正文内容
body_content = """你好,这是一个测试邮件!"""
# 构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
message_text = MIMEText(body_content,"plain","utf-8")
# 向MIMEMultipart对象中添加文本对象
mm.attach(message_text)

6、添加图片

# 二进制读取图片
image_data = open('sample.jpg','rb')
# 设置读取获取的二进制数据
message_image = MIMEImage(image_data.read())
# 关闭刚才打开的文件
image_data.close()
# 添加图片文件到邮件信息当中去
mm.attach(message_image)

7、添加附件(excel表格)

# 构造附件
atta = MIMEText(open('sample.xlsx', 'rb').read(), 'base64', 'utf-8')
# 设置附件信息
atta["Content-Disposition"] = 'attachment; filename="sample.xlsx"'
# 添加附件到邮件信息当中去
mm.attach(atta)

8、发送邮件

# 创建SMTP对象
stp = smtplib.SMTP()
# 设置发件人邮箱的域名和端口,端口地址为25
stp.connect(mail_host, 25)  
# set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息
stp.set_debuglevel(1)
# 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
stp.login(mail_sender,mail_license)
# 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
stp.sendmail(mail_sender, mail_receivers, mm.as_string())
print("邮件发送成功")
# 关闭SMTP对象
stp.quit()

结果

看看邮箱接收到来自python的邮件长什么样:
图片

附:如何设置邮箱授权码

本文测试发送邮箱为163邮箱,可按如下步骤获取邮箱授权码

第一步:登陆网页163邮箱,找到设置并打开
图片
第二步:点击设置中的客户端授权密码
图片

第三步:点击开启,并按提示设置你的授权密码
图片
在学习python中有任何困难不懂的可以微信扫描下方CSDN官方认证二维码加入python交流学习,多多交流问题,互帮互助,这里有不错的学习教程和开发工具。
(这里每天都会不定时更新python不同题型和教程,希望大家一起学习,一起进步)


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

相关文章

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

目录 第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端和后台管理系统&#xff0c;前台APP可以注册&#xff0c;登录&#xff0c;试卷列表&#xff0c;开始测试&#xff0c;个人中心&#xff0c;试卷打分&#xff0c;试题解析&#xff0c;退出系统&#xff0c;后台管理系统 主要有 老师注册 登…

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

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

图书馆管理系统的开发

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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的后台管理系统&#xff0c;你可以手动从0到1动手撸&#xff0c;也可以基于现有的vue的后台管理系统模版进行开发。 github上有几套关注度比较的vue后台管理系统模版[1]&#xff1a; vue-element-admin[2]vue-admin[3]vue-manage-system[4]iview-admi…

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

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

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

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

管理信息系统开发方法——原型法

管理信息系统开发方法——原型法 引言 管理信息系统(MIS)的设计开发方法是系统开发人员和从事方法论研究人员极为关注的问题。对于MIS项目来说&#xff0c;在系统开发前期用户很难确定和表达对未来的信息系统的全面要求。这是因为用户对系统本身的想法是比较模糊的和不完全确…

产品开发的生命周期管理

背景 现今我们很多工程师在实际工作中&#xff0c;可能工作许多年都还未能感受到自己所在组织产品或项目的开发流程到底是怎样的&#xff0c;也不清楚自己在团队中为何存在&#xff0c;应该如何表现才能在团队中出类拔萃。 大部分原因就在于我们自己对于组织的结构和流程没有…