Python分享-email.message如何构建你的邮件消息

简介: Python分享-email.message如何构建你的邮件消息

我最近在做发送邮件相关的一些任务,由于一些原因呢,不打算仅仅为了一个邮件功能就去申请第三方包的使用权限,所以还是决定使用python自带的snmplib来做啊,也很好用。但是第三方包有些做了进一步的封装和更加人性化的优化啊。减少了我们去配置一些麻烦的内容。

email.message.EmailMessage()

EmailMessage()这个类就是email提供的主要内容了,通过它我们可以设置邮件消息的头部,主体内容,还能添加附件。

我们的邮件由header和payload组成,header可以理解为,平时我们收到邮件上方的发件人,收件人,主题,抄送这部分,然后payload就是我们的邮件主体,包括文字性的邮件内容,以及附件。

EmailMessage()这个类是一个dict like的类,也就是说我们可以通过一些类字典的接口来操作,但是注意的是,与一般的字典不同,字典是无序的,EmailMessage()的键是有序的,可以看下面的那个例子,我们设置消息头的时候,是按照顺序来的,键还可以重复,python提供了额外的方法来处理包含重复键的header。

直观的用例

代码用例,下方的代码包含了消息主体的构建,以及通过email.message.EmailMessage()这个类,我们还可以添加附件,非常的方便。依稀记得以前要用一个MIME的包,真的很难用。

message = email.message.EmailMessage()
# 邮件头部
message["From"] = "***@gmail.com"
message["To"] = ["****@gmail.com", ]
message["cc"] = ["****@gmail.com",]
message["Bcc"] = ["****@yahoo.in", ]
# 主题
message["Subject"] =  "Mail with attachments"
# 消息主体
body = '''
Hello All,
Please find the attached file.
Regards,
Alex
'''
message.set_content(body)
# 比如我们附加一个excel文件
with open("report.xlsx", mode="rb") as fp:
    excel_content = fp.read()
    message.add_attachment(excel_content, maintype="application", subtype="excel", filename="do


相关文章
|
3天前
|
数据采集 存储 XML
构建高效的Python爬虫系统
【9月更文挑战第30天】在数据驱动的时代,掌握如何快速高效地获取网络信息变得至关重要。本文将引导读者了解如何构建一个高效的Python爬虫系统,从基础概念出发,逐步深入到高级技巧和最佳实践。我们将探索如何使用Python的强大库如BeautifulSoup和Scrapy,以及如何应对反爬措施和提升爬取效率的策略。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,帮助你在信息收集的海洋中航行得更远、更深。
15 6
|
8天前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
9天前
|
存储 大数据 索引
解锁Python隐藏技能:构建高效后缀树Suffix Tree,处理大数据游刃有余!
通过构建高效的后缀树,Python程序在处理大规模字符串数据时能够游刃有余,显著提升性能和效率。无论是学术研究还是工业应用,Suffix Tree都是不可或缺的强大工具。
24 6
|
7天前
|
存储 Python
深度剖析:Python里字典树Trie的构建与查询,让你的代码更优雅!
在编程的世界里,数据结构的选择往往直接决定了程序的效率和可读性。今天,我们将深入探索一种高效处理字符串搜索与匹配的数据结构——字典树(Trie),也称作前缀树或单词查找树。通过Python实现Trie树,我们将看到它如何优雅地解决一系列字符串相关的问题,并提升代码的整体质量。
13 2
|
11天前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
在数字宇宙中,网络如同复杂脉络连接每个角落,Python Socket编程则是开启这一世界的钥匙。本文将引导你从基础概念入手,逐步掌握Socket编程,并通过实战示例构建TCP/UDP服务器与客户端。你将学会使用Python的socket模块进行网络通信,了解TCP与UDP的区别,并运用多线程与异步IO提升服务器性能。跟随本文指引,成为网络世界的建筑师,构建自己的网络帝国。
23 2
|
11天前
|
SQL 缓存 数据库
构建高效Web应用:掌握Python中的ORM映射技术
在Web开发中,数据库操作至关重要,但直接编写SQL语句会增加代码复杂度并降低效率。对象关系映射(ORM)技术通过将对象模型映射为数据库表,使开发者能以面向对象的方式处理数据,提升开发效率和代码可维护性。本文以Python和SQLAlchemy为例,介绍ORM的基本概念、安装方法及使用技巧,并展示其在提升Web应用性能方面的优势。通过ORM,开发者可以简化数据库操作,专注于业务逻辑实现,提高开发效率和代码质量。
35 1
|
15天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
47 3
|
20天前
|
JSON API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
29 6
|
20天前
|
Python
使用Python和Flask构建简单的Web应用
使用Python和Flask构建简单的Web应用
28 6
|
20天前
|
数据可视化 数据处理 开发者
构建高效的数据流图:Python与PyGraphviz的实践
【9月更文挑战第13天】在本文中,我们将探索如何利用Python和PyGraphviz库来创建和操作数据流图。我们将通过一个具体示例,展示如何从零开始构建一张数据流图,并讨论如何优化图表以提高可读性。文章旨在为初学者提供一个清晰的入门指南,同时为有经验的开发者提供一些高级技巧。
下一篇
无影云桌面