Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >干货 | 解放双手,用Python实现自动发送邮件

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

作者头像
派大星的数据屋
发布于 2022-04-02 11:57:21
发布于 2022-04-02 11:57:21
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间。 Python有两个内置库:smtplibemail,能够实现邮件功能,smtplib库负责发送邮件,email库负责构造邮件格式和内容。 邮件发送需要遵守SMTP协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 1、先导入相关的库和方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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、设置邮箱域名、发件人邮箱、邮箱授权码、收件人邮箱

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# SMTP服务器,这里使用163邮箱
mail_host = "smtp.163.com"
# 发件人邮箱
mail_sender = "******@163.com"
# 邮箱授权码,注意这里不是邮箱密码,如何获取邮箱授权码,请看本文最后教程
mail_license = "********"
# 收件人邮箱,可以为多个收件人
mail_receivers = ["******@qq.com","******@outlook.com"]

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mm = MIMEMultipart('related')

4、设置邮件头部内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 邮件主题
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、添加正文文本

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

6、添加图片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 二进制读取图片
image_data = open('sample.jpg','rb')
# 设置读取获取的二进制数据
message_image = MIMEImage(image_data.read())
# 关闭刚才打开的文件
image_data.close()
# 添加图片文件到邮件信息当中去
mm.attach(message_image)

7、添加附件(excel表格)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 构造附件
atta = MIMEText(open('sample.xlsx', 'rb').read(), 'base64', 'utf-8')
# 设置附件信息
atta["Content-Disposition"] = 'attachment; filename="sample.xlsx"'
# 添加附件到邮件信息当中去
mm.attach(atta)

8、发送邮件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建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邮箱,找到设置并打开

第二步:点击设置中的客户端授权密码

第三步:点击开启,并按提示设置你的授权密码

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从七桥问题开始:全面介绍图论及其应用
选自Medium 作者:Vardan Grigoryan 机器之心编译 图论是计算机科学中最重要、最有趣的领域之一,同时也是最容易被误解的。本长文从图论最基础的七桥问题开始,进而结合推特与 Facebook 实例解释无向图与有向图。此外,本文还是用大量的实例解释表征图、搜索树、哈希表等关键概念。最后本文描述了基于深度的搜索和基于广度的搜索等十分流行的图算法。 理解和使用图帮助我们成为更好的程序员。用图思考帮助我们成为最好的,至少我们应该那么思考。图是很多节点 V 和边 E 的集合,即可以表示为有序对 G=(
机器之心
2018/05/08
2.1K0
从七桥问题开始:全面介绍图论及其应用
算法导论第十二章 二叉搜索树
一、二叉搜索树概览   二叉搜索树(又名二叉查找树、二叉排序树)是一种可提供良好搜寻效率的树形结构,支持动态集合操作,所谓动态集合操作,就是Search、Maximum、Minimum、Insert、Delete等操作,二叉搜索树可以保证这些操作在对数时间内完成。当然,在最坏情况下,即所有节点形成一种链式树结构,则需要O(n)时间。这就说明,针对这些动态集合操作,二叉搜索树还有改进的空间,即确保最坏情况下所有操作在对数时间内完成。这样的改进结构有AVL(Adelson-Velskii-Landis) tre
Linux云计算网络
2018/01/11
6260
算法导论第十二章 二叉搜索树
算法:搜索
在无序记录集中搜索关键词为key的记录在记录集中的位置i(0 <= i <= n - 1). 它的查找过程是:
用户3578099
2022/04/18
6040
算法:搜索
算法:树
在之前的内容中我们学习了链表的这一基础数据结构,单链表是其中的一种,结构形式如下所示:
用户3578099
2022/03/15
7430
算法:树
PAT 1043 Is It a Binary Search Tree (25分) 由前序遍历得到二叉搜索树的后序遍历
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:
vivi
2020/07/14
5890
PAT 1043 Is It a Binary Search Tree (25分) 由前序遍历得到二叉搜索树的后序遍历
C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true。否则返回false。假设输入的数组的任意两个数字都互不相同。
Enjoy233
2019/03/05
5830
C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解
​LeetCode刷题实战510:二叉搜索树中的中序后继 II
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2022/03/03
2240
​LeetCode刷题实战510:二叉搜索树中的中序后继 II
手把手刷二叉搜索树(第一期)
前文「手把手刷二叉树系列」已经写了 第一期,第二期 和 第三期,今天写一篇二叉搜索树(Binary Search Tree,后文简写 BST)相关的文章,手把手带你刷 BST。
labuladong
2021/09/23
4610
C/C++ 常用的四种查找算法
在计算机科学中,搜索算法是一种用于在数据集合中查找特定元素的算法。C语言作为一种强大的编程语言,提供了多种搜索算法的实现方式。本文将介绍C语言中的四种常见搜索算法其中包括(线性查找,二分法查找,树结构查找,分块查找),并提供每种算法的简单实现示例。
王瑞MVP
2023/11/30
6210
二叉树常见算法总结和C++实现
DFS深度搜索(从上到下)和分治法区别:前者一般将最终结果通过引用参数传入,或者一般递归返回结果最终合并
evenleo
2020/08/21
1K0
47. 六大类二叉树面试题汇总解答
继上一篇总结了二叉树的基础操作后,这一篇文章汇总下常见的二叉树相关面试题,主要分为判断类、构建类、存储类、查找类、距离类、混合类这六类大问题。
用户11332765
2024/11/01
2460
47. 六大类二叉树面试题汇总解答
原创 | 手把手刷二叉搜索树(第二期)
我们前文 手把手刷二叉搜索树(第一期) 主要是利用二叉搜索树「中序遍历有序」的特性来解决了几道题目,本文来实现 BST 的基础操作:判断 BST 的合法性、增、删、查。其中「删」和「判断合法性」略微复杂。
labuladong
2021/09/23
3250
数据结构与算法(十六)——静态查找&动态查找
静态查找指的是只对表执行查找操作,并不会动态添加元素。静态查找主要有顺序查找和二分查找两大类,接下来我们依次讲解一下。
拉维
2022/06/15
2.1K0
数据结构与算法(十六)——静态查找&动态查找
C++版 - 剑指offer 面试题63:二叉搜索树的第k个结点(二叉树中序遍历的应用) 题解
题目:给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 (见下面的图1) 中,按结点数值大小顺序第三个结点的值为4。
Enjoy233
2019/03/05
7030
C++版 - 剑指offer 面试题63:二叉搜索树的第k个结点(二叉树中序遍历的应用) 题解
【leetcode刷题】T136-二叉搜索树中的众数
https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/
木又AI帮
2019/08/08
3430
每个程序员都必须知道的8种数据结构
数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。
程序员小强
2020/03/31
1.5K0
​LeetCode刷题实战98:验证二叉搜索树
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/01/20
2990
​LeetCode刷题实战98:验证二叉搜索树
【C++】二叉搜索树
二叉搜索树又称二叉排序树,可以简写成 BST,它或者是一棵空树,或者是具有以下性质的二叉树:
YoungMLet
2024/03/01
1340
【C++】二叉搜索树
二叉树-LeetCode 235、236、226、230(中序,LCA,DFS)
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]
算法工程师之路
2019/11/26
4960
【43期】盘点那些必问的数据结构算法题之二叉树基础
来自:juejin.im/post/5ba3bb52e51d450e942f3031
良月柒
2020/09/23
3850
【43期】盘点那些必问的数据结构算法题之二叉树基础
推荐阅读
相关推荐
从七桥问题开始:全面介绍图论及其应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验