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

如何解码IMAP获取的邮件主题为客户端可读格式?

解决邮件主题解码与UID获取错误问题

一、解码MIME编码的邮件主题

你看到的=?utf-8?B?0LfQsNGP0LLQutCwIDIxXzE0MTIyMg==?=是MIME Base64编码的主题,Python的email模块自带解码工具,直接对my_msg['subject']变量处理即可:

首先导入所需模块,然后替换原主题打印代码:

import email.header  # 新增导入

# 替换原print("subj:", my_msg['subject'])的代码块
encoded_subject = my_msg['subject']
decoded_parts = email.header.decode_header(encoded_subject)
subject = ''
for part, encoding in decoded_parts:
    if isinstance(part, bytes):
        # 按指定编码解码字节内容,默认用utf-8兜底
        subject += part.decode(encoding or 'utf-8')
    else:
        # 已经是字符串直接拼接
        subject += part
print("subj:", subject)

这段代码会自动识别编码格式,输出和邮件客户端一致的正常主题样式。

二、修复UID Fetch的"can't concat int to bytes"错误

错误根源是govno是整数类型,而imaplib的uid()方法要求邮件ID必须是字节串或字符串,只需把整数转成对应类型即可:

方式1:转成字节串

govno = 123  # 假设这是最新邮件的UID整数
yek, do = suka.uid('fetch', str(govno).encode(), '(RFC822)')

方式2:直接传字符串

govno = 123
yek, do = suka.uid('fetch', str(govno), '(RFC822)')

两种写法都能解决类型不兼容的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:55:38