我如何只打印出消息而不是整个文本[重复]

Posted

技术标签:

【中文标题】我如何只打印出消息而不是整个文本[重复]【英文标题】:How do I only print out the message instead of the whole text [duplicate] 【发布时间】:2014-06-20 12:24:18 【问题描述】:

这是我阅读电子邮件的 Python 代码:

import imaplib

mailserver=imaplib.IMAP4_SSL('imap.gmail.com',993)
user = 'm****l@gmail.com'
passs = 'm****s'
mailserver.login(user,passs)

status, count = mailserver.select('Inbox')
status, data = mailserver.fetch(count[0],'(UID BODY[TEXT])')

print(data)

mailserver.close()
mailserver.logout() 

它打印出消息的整个 html 部分。如何只打印消息本身?

【问题讨论】:

遍历消息对象树 - ***.com/questions/1463074/… 【参考方案1】:
import imaplib

mailserver=imaplib.IMAP4_SSL('imap.gmail.com',993)
user = 'm****l@gmail.com'
passs = 'm****s'
mailserver.login(user,passs)

status, count = mailserver.select('Inbox')
status, data = mailserver.fetch(count[0],'(RFC822)')

print(data)

# Something like this
import email
msg = email.message_from_string(data[0][1])
print(msg['Subject'], msg['Body'])

mailserver.close()
mailserver.logout() 

如果你好奇的话,我在 gist 中发布了一个自我提醒。

https://gist.github.com/jmunsch/11374042

【讨论】:

这是错误的。使用硬编码的偏移量迟早会失败。 感谢您指出这一点我不知道......我认为文档可能需要一些扩展......docs.python.org/2/library/imaplib.html#imap4-example【参考方案2】:

这是How can I get an email message's text content using python? 的副本(在很多其他中)。简而言之,您必须查看 MIME 树并找出其中哪些部分对您来说是有趣的。使用像 [1] 这样的通用偏移将起作用。

【讨论】:

以上是关于我如何只打印出消息而不是整个文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中打印出文本文件会给出错误消息 -charmap_decode(input,errors,decoding_table) [重复]

为啥它只打印文本文件的一个单词而不是整个文本文件到 html 文件

我怎样才能只闪烁背景而不是文本[重复]

在python中打印字符串的特定部分[重复]

我实现 memset 的结果只打印更改,而不是整个结果字符串

Python-如何使用 re 匹配整个字符串 [重复]