我如何只打印消息而不打印整个文本

0 投票
2 回答
945 浏览
提问于 2025-04-18 05:17

这是我用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部分。请问我怎么才能只打印出邮件的内容呢?

2 个回答

0
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() 

如果你感兴趣的话,我在一个小笔记里发了个自我提醒。

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

0

这个问题和如何用Python获取邮件内容的问题是重复的(还有很多类似的问题)。简单来说,你需要查看MIME树,找出哪些部分对你来说是有用的。使用像[1]这样的通用偏移量是不行的

撰写回答