Python电子邮件引用-可打印编码问题

2023-12-11

我使用以下命令从 Gmail 中提取电子邮件:

def getMsgs():
 try:
    conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
  except:
    print 'Failed to connect'
    print 'Is your internet connection working?'
    sys.exit()
  try:
    conn.login(username, password)
  except:
    print 'Failed to login'
    print 'Is the username and password correct?'
    sys.exit()

  conn.select('Inbox')
  # typ, data = conn.search(None, '(UNSEEN SUBJECT "%s")' % subject)
  typ, data = conn.search(None, '(SUBJECT "%s")' % subject)
  for num in data[0].split():
    typ, data = conn.fetch(num, '(RFC822)')
    msg = email.message_from_string(data[0][1])
    yield walkMsg(msg)

def walkMsg(msg):
  for part in msg.walk():
    if part.get_content_type() != "text/plain":
      continue
    return part.get_payload()

然而,我收到的一些电子邮件几乎不可能从与编码相关的字符(例如“=”)中提取日期(使用正则表达式),这些字符随机落在各个文本字段的中间。这是一个出现在我想要提取的日期范围内的示例:

姓名: KIRSTI 电子邮件:[电子邮件受保护]电话号码:+999 99995192 队伍总数: 4 总数, 0 儿童抵达/出发:10 月 9 日= , 2010年 - 2010年10月13日 - 2010年10月13日

有没有办法删除这些编码字符?


您可以/应该使用email.parser例如,解码邮件消息的模块(快速而肮脏的例子!):

from email.parser import FeedParser
f = FeedParser()
f.feed("<insert mail message here, including all headers>")
rootMessage = f.close()

# Now you can access the message and its submessages (if it's multipart)
print rootMessage.is_multipart()

# Or check for errors
print rootMessage.defects

# If it's a multipart message, you can get the first submessage and then its payload
# (i.e. content) like so:
rootMessage.get_payload(0).get_payload(decode=True)

使用“解码”参数Message.get_payload,模块根据其编码自动解码内容(例如,您问题中引用的可打印内容)。

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

Python电子邮件引用-可打印编码问题 的相关文章

随机推荐

  • 是否可以通过Python脚本执行QPDF

    我正在开发一个处理 PDF 文件的 python 脚本 尽管其中一些文件包含加密 限制使用只能打印 我必须手动删除它们才能处理它们 为此我一直手动使用QPDF在运行脚本之前删除对单个 PDF 文件的这些限制 qpdf 的命令非常简单 在命令
  • 无法在 iOS 中将 XMPPFramework 连接到 Openfire 服务器

    我正在研究一个iOS用户登录应用程序的聊天应用程序 我已经下载了XMPPFramework来自 GitHubXMPP框架 我正在尝试连接XMPP框架与Openfire服务器通过以下方式本教程 这是我将 XMPP 连接到 openfire 的
  • 有人在 Windows 7 上成功使用 Visual Studio 6 吗?

    VS6 在 Windows 7 上安装期间出现了一系列错误 然后完全崩溃 我特别需要让 VB6 在 Windows 7 上运行 有人有运气吗 VB6 新闻组中的人们report他们已经设法让它在 Windows 7 上运行 There s
  • 如何在 DirectX 9 中将 XMMATRIX 转换为 D3DMATRIX?

    我从 www directxtutorial com 学习 DirectX DirectX 9 并在 Windows 8 中使用 Visual Studio 2012 d3dx9 d3dx 被其他标头 例如 DirectXMath 替换 因
  • Android - 以编程方式同步联系人添加到谷歌帐户

    在我的应用程序中 我需要将联系人添加到默认谷歌帐户并同步它 这是我的代码 public static void addContact Context context String DisplayName String WorkNumber
  • 未找到命名对象资源 - Omnifaces + JSF 2.2.12

    自从我安装了 Mojorra 版本 2 2 12 从 2 2 8 开始 以来 我的 JSF 页面出现了问题 加载页面时它会抛出异常 例外情况是 命名对象 未找到 org omnifaces component output Resource
  • li:last-child 似乎在 IE8 中不起作用

    下面是我的html结构 div class footerMenu ul li Home li li About li li Feedback li li Contact us li ul div But footerMenu li last
  • 如何翻转x轴?

    I am plotting amplitude reconstruction of FMCW radar 我只想翻转里面的图 但是 x 轴应该是相同的 我该怎么办呢 下面是我的绘图代码 for i 1 2500 dividing each
  • 无法在 win64 模式下运行新项目,但 win32 模式可以正常运行

    我最近重新格式化了运行 Windows 8 1 的计算机 并重新安装了 Delphi XE6 它在格式化计算机之前运行良好 每当我打开一个新项目并按 F9 Windows 64 作为目标平台 时 我都会收到以下错误 Debugger Ass
  • Perl 正则表达式查找精确单词

    我想找到这个词sprintf在我的代码中 应该使用什么 Perl 正则表达式 有些行的文字如下sprintf private 我想排除它 但只需要sprintf 你必须使用 b在单词的边界处 bsprintf b
  • std::vector 元素是否保证是连续的?

    我的问题很简单 是std vector保证元素是连续的 换句话说 我可以使用指向 a 的第一个元素的指针吗 std vector作为 C 数组 如果我没记错的话 C 标准并没有做出这样的保证 但是 那std vector如果元素不连续 几乎
  • Rails 关系排序?

    所以我想将这个 SQL 查询转换为 Rails 并且按照这个确切的顺序 假设我有 WITH sub table as SELECT FROM main table LIMIT 10 OFFSET 100 ORDER BY id SELECT
  • 使用 Rhino 模拟抽象类的默认行为

    我对嘲笑还很陌生 所以这可能是我还没有意识到的事情 但我在任何地方都找不到一个好的例子 我试图断言默认情况下 任何从我的抽象类继承的类都会在构造函数中实例化一个集合 这是抽象类 public abstract class DataColle
  • BufferedReader 用于大 ByteBuffer?

    有没有一种方法可以使用 BufferedReader 读取 ByteBuffer 而不必先将其转换为 String 我想将相当大的 ByteBuffer 作为文本行读取 出于性能原因 我想避免将其写入磁盘 在 ByteBuffer 上调用
  • 仅当行不存在时才在 PL/pgSQL 中运行 SQL 语句

    我想在 Postgres 9 6 的 PL pgSQL 函数中做这样的事情 INSERT INTO table1 id value VALUES 1 a ON CONFLICT DO NOTHING If the above stateme
  • Sqlalchemy 的问题并将 jsonb 数组插入到 postgresql

    所以我试图将 jsonb 值数组插入到我的数据库中 但我似乎无法正确格式化它 这是我的代码 updated old passwords append index 1 password hashed password user old pas
  • 如何为express.js 服务器设置 SSL 证书?

    之前 在旧版本的 Express 中 我可以这样做 express createServer key keyFile cert certFile 然而 在较新版本的 Express 中 这不再有效 var app express 我应该打电
  • 产品口味本地化

    我有 3 种产品风格 每种风格都进行了调试和发布 我已经成功地为每种风格赋予了独特的字符串和图标 现在我正在准备本地化 这需要针对每种产品口味使用不同的字符串 这是我当前的文件夹 目录设置 myApp src main res values
  • 如何在运行 CLI 和 Apache2Handler 时将系统环境变量获取到 PHP 中?

    我的系统是Ubuntu我已经设置了我的环境变量 etc environment 如果我在跑步PHP脚本使用CLI 环境变量来自 etc environment被认可 但是 如果我去执行PHP脚本通过http domain test php
  • Python电子邮件引用-可打印编码问题

    我使用以下命令从 Gmail 中提取电子邮件 def getMsgs try conn imaplib IMAP4 SSL imap gmail com 993 except print Failed to connect print Is