gpt4 book ai didi

django - 以 HTML、imaplib 和 Django 的形式获取文本

转载 作者:行者123 更新时间:2023-12-01 04:01:32 26 4
gpt4 key购买 nike

我在 Python/Django 中使用 imaplib 获取电子邮件。

我的目标是阅读纯文本和 HTML 电子邮件。

我正在使用:

mail.select('inbox', readonly=True)
result, data = mail.uid('fetch', email_uid, '(RFC822)')

raw_email = data[0][1]
email_message = email.message_from_string(raw_email)

#print "EMAIL:",email_message
#print "HEADERS",email_message.items()

subject = get_decoded_header(email_message['Subject'])
from_address = get_decoded_header(email_message['From'])

date = email_message['Date']
date = parse_date(date)

body = ''+get_first_text_block(email_message)

以及 get_first_text_block 的代码(从网上获得):
def get_first_text_block(email_message_instance):
maintype = email_message_instance.get_content_maintype()

if maintype == 'multipart':
for part in email_message_instance.get_payload():
if part.get_content_maintype() == 'text':
return part.get_payload()
elif maintype == 'text':
return email_message_instance.get_payload()

# In cases of emails with empty body
return ''

现在,问题是,文本没有显示格式。具体来说:
如果是纯文本电子邮件,则文本显示为一个大的合并字符串,而不是在行之间有分隔符、段落和空行。

如果是 HTML 文本,则 HTML 根本不显示,而是显示为纯文本,其中包含 HTML 片段(即使在 Django 上使用 |safe 过滤器)。

我想可能会发生将电子邮件有效负载错误地转换为字符串或类似的事情,但我检查了所有内容,但无法找出可能是什么问题。

我究竟做错了什么?

最佳答案

问题是您只使用电子邮件正文的第一个文本块。请尝试以下操作,看看它是否有效。这不是 Django 的问题。

body = email_message.get_payload()[1].get_payload()

尝试更改索引并测试以查看您是否看到 html。

基于此,您必须修改函数以获取电子邮件正文。

编辑:
我在这里假设您正在查看多部分消息

关于django - 以 HTML、imaplib 和 Django 的形式获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com