You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Gmail API读取邮件?HTML内容美化求助

解决Gmail邮件HTML正文无法正常渲染的问题

方案一:在Flask模板中允许HTML渲染

Jinja2模板默认会自动转义HTML内容,导致HTML代码以纯文本形式显示而非渲染。只需在模板中使用safe过滤器关闭转义:

修改emails.html里的邮件正文展示代码:

<p>Body: {{ email.body|safe }}</p>

修改后,HTML格式的正文会被浏览器正常渲染,保留原有的排版和样式。

注意:该方式会直接渲染邮件中的全部HTML内容,若邮件包含恶意脚本存在安全风险,仅建议用于处理可信来源的邮件。

方案二:后端将HTML转换为纯文本

如果不需要保留HTML格式,希望显示干净的纯文本内容,可以借助beautifulsoup4库提取HTML文本:

  1. 安装依赖库:
pip install beautifulsoup4
  1. 修改getMessage函数,添加HTML转纯文本逻辑:
    首先导入BeautifulSoup:
from bs4 import BeautifulSoup

然后替换原有的邮件正文获取代码:

# 提取邮件正文
message_main_type = mime_msg.get_content_maintype()
if message_main_type == 'multipart':
    for part in mime_msg.get_payload():
        # 优先获取纯文本内容
        if part.get_content_subtype() == 'plain':
            email_info['body'] = part.get_payload()
            break
        # 若无纯文本,将HTML转为纯文本
        elif part.get_content_subtype() == 'html':
            soup = BeautifulSoup(part.get_payload(), 'html.parser')
            email_info['body'] = soup.get_text()
elif message_main_type == 'text':
    if mime_msg.get_content_subtype() == 'html':
        soup = BeautifulSoup(mime_msg.get_payload(), 'html.parser')
        email_info['body'] = soup.get_text()
    else:
        email_info['body'] = mime_msg.get_payload()

处理后,无论邮件是纯文本还是HTML格式,都会转换为无格式的纯文本内容展示。

额外优化说明

原代码仅判断内容主类型为text,未区分text/plain和text/html。优化后的逻辑会优先提取纯文本部分,避免不必要的HTML转换,提升内容可读性。

内容的提问来源于stack exchange,提问作者Jaswanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:17:27