如何从 python 中的 RFC 2822 邮件标头中提取多个电子邮件地址?

2023-11-22

蟒蛇的email模块非常适合解析标头。但是,那To:header可以有多个接收者,并且可能有多个To:标头。那么如何拆分每个电子邮件地址呢?我不能用逗号分隔,因为逗号可以被引用。有没有办法做到这一点?

演示代码:

msg="""To: [email protected], "User Two" <[email protected]", "Three, User <[email protected]>                               
From: [email protected]                                                                                                      
Subject: This is a subject                                                                                                      

This is the message.                                                                                                            
"""

import email

msg822 = email.message_from_string(msg)
for to in msg822.get_all("To"):
    print("To:",to)

电流输出:

$ python x.py
To: [email protected], "User Two" <[email protected]", "Three, User <[email protected]>
$ 

通过所有的To线通过email.utils.getaddresses():

msg="""To: [email protected], John Doe <[email protected]>, "Public, John Q." <[email protected]>
From: [email protected]
Subject: This is a subject

This is the message.
"""

import email

msg822 = email.message_from_string(msg)
for to in email.utils.getaddresses(msg822.get_all("To", [])):
    print("To:",to)

请注意,我重写了你的To线。我相信您的示例不是有效的格式。

参考:https://docs.python.org/3/library/email.utils.html#email.utils.getaddresses

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 python 中的 RFC 2822 邮件标头中提取多个电子邮件地址? 的相关文章

随机推荐

  • Java 堆转储:如何通过 1. io.netty.buffer.ByteBuf Util 2. byte[] 数组查找占用内存的对象/类

    我发现我的一个 Spring Boot 项目的内存 RAM 消耗 日益增加 当我将 jar 文件上传到 AWS 服务器时 它占用了 582 MB 的 RAM 最大分配的 RAM 为 1500 MB 但是每天 RAM 都会增加 50MB 到
  • 用作接口替代品的内部类示例

    我被告知的内容激发了我对这个话题的好奇 Java gui 类可以实现数百个侦听器和回调 并且许多书籍教您在 gui 类中实现所有这些接口 或者 这些方面可以在内部类中实现 因此侦听器调用的方法不会混淆 我想知道如何在 ActionScrip
  • 在Python中,在具有特定扩展名的目录中构建文件列表的最快方法

    在 GNU Linux 系统上的 Python 中 递归扫描目录中所有内容的最快方法是什么 MOV or AVI文件 并将它们存储在列表中 您可以使用 os walk 进行递归行走 使用 glob glob 或 fnmatch filter
  • 设置自定义字体

    我正在尝试在程序中将自定义字体 bilboregular ttf 设置为 2 个 jLabels 但字体未成功加载 主要方法调用如下 this should work if the build is in a jar file otherw
  • 如何在 MySQL 中将字符串添加到列值之前?

    我需要一个 SQL 更新语句来更新所有行的特定字段 并在现有值的前面添加一个字符串 test 例如 如果现有值为 try 则应变为 testtry 您可以使用CONCAT函数来做到这一点 UPDATE tbl SET col CONCAT
  • 从现有存储库的子目录创建新的 git 存储库

    我想从现有存储库的子文件夹中创建一个单独的存储库 将子目录分离 移动 到单独的 Git 存储库中恰恰表明了这一点 但是 我无法用它得到一个干净的仓库 我最终遇到了新存储库的两个问题 历史似乎是重复的 我无法保留分支历史记录 这是我所做的 g
  • 用 range() 以相反的顺序打印列表?

    如何生成以下列表range 在Python中 9 8 7 6 5 4 3 2 1 0 Use reversed 函数 高效 因为range实施 reversed reversed range 10 这更有意义 Update list cas
  • 关于 emacs 中的自动完成和 yasnippet

    我在 Emacs 中使用自动完成和 yasnippet 但我对它们的设置感到困惑 我将以下代码放入我的 emacs add to list load path emacs d plugins yasnippet require yasnip
  • 我应该使用 Windows 服务还是 ASP.NET 后台线程?

    我正在 ASP NET 3 5 中编写一个 Web 应用程序 它负责一些基本的数据输入场景 应用程序还有一个组件需要不断轮询一些数据并根据业务逻辑执行操作 实现 轮询 组件的最佳方法是什么 它需要每隔几分钟左右运行一次并检查数据 我过去见过
  • Android模拟器-dns-server使用

    我目前正在努力让 Android 模拟器使用在本地主机 127 0 0 1 上运行的自定义 DNS 服务器 到目前为止 我已经尝试了各种方法试图说服模拟器使用我的 DNS 服务器 但到目前为止还没有成功 最后 它总是归结为以下错误消息 WA
  • “not, and, or, not_eq..”是 C++ 标准的一部分吗? (为什么在代码中可以使用或避免它们?)

    所以它看起来像所有这些 http www cplusplus com reference clibrary ciso646 是c 中的关键字 我的问题是 这是 C 标准的一部分吗 我可以依赖它得到主要编译器的支持吗 我知道 gcc 确实支持
  • 如何在 Bash 中比较点分隔版本格式的两个字符串?

    有没有办法在 bash 上比较这些字符串 例如 2 4 5 and 2 8 and 2 4 5 1 这是一个纯 Bash 版本 不需要任何外部实用程序 bin bash vercomp if 1 2 then return 0 fi loc
  • 在 R 中将 CSV 读取为 data.frame

    我是 R 新手 正在尝试读取 csv 文档显示了一个函数read csv 但是 当我读取文件并检查变量的类型时 它会显示一个列表 文档将其显示为data frame 有人可以解释为什么会这样吗 到目前为止我的代码 mytable lt re
  • 移动设备放大 Google Apps 脚本

    我在 GAS 中制作了一个 400 像素宽的网络应用程序 我希望在加载时缩放以填充移动设备的屏幕 而不是只填充一半屏幕 尽管仍然使用固定的像素宽度 我尝试使用下面的视口代码但没有成功 Google 最近几个月解决了这个问题 并使用 addM
  • OpenSSL 静态库太大,有什么替代方法或方法可以减小其大小?

    我已经使用了 OpenSSL 1 0 的预构建静态库 但它使我的二进制文件太大 在发布模式下将其大小增加了约 800Kb 我不需要 OpenSSL 的大部分功能 例如 BIO 我使用自己的套接字 因此在代码中我只使用几个 SSL XXXXX
  • 如何防止ggplot2中的轴相交

    我正在使用 ggplot2 制作一些对数转换数据的线图 这些数据都有很大的值 在 10 6 和 10 8 之间 由于轴不是从零开始 我不想让它们在 原点 相交 以下是轴当前的样子 我更喜欢从基础图形中获得的东西 但我另外使用geom rib
  • 3D 中两个矩形之间的交集

    为了获得 3D 中两个矩形之间的交线 我将它们转换为平面 然后使用法线的叉积获得交线 然后尝试获得与矩形的每个线段的线交点 问题是这条线平行于三段 并且只与 NAN NAN NAN 中的一条相交 这是完全错误的 你能告诉我我的代码有什么问题
  • TabLayout 的选项卡未显示

    我有一个主要活动 它托管一个片段 该片段又托管一个 TabLayout 带有 ViewPager 显示选项卡栏 但不显示选项卡本身 这是我在主要活动中用于显示主机片段的代码 Fragment fragment new BMITabsFrag
  • 应用程序更新时的警报管理器[重复]

    这个问题在这里已经有答案了 我正在开发一个使用的应用程序AlarmManager对于某些进程 我想问一下我是否在 Playstore 上更新我的应用程序 更新而不是新安装 注册的警报会被取消吗 还将值SharedPreference重置 A
  • 如何从 python 中的 RFC 2822 邮件标头中提取多个电子邮件地址?

    蟒蛇的email模块非常适合解析标头 但是 那To header可以有多个接收者 并且可能有多个To 标头 那么如何拆分每个电子邮件地址呢 我不能用逗号分隔 因为逗号可以被引用 有没有办法做到这一点 演示代码 msg To email pr