仅有text/plain部件,不等于get_body会选择它作为返回的正文候选。Python 3.14 的 EmailMessage.get_body 会按 preferencelist 给出的顺序寻找最合适的正文候选,而不是扫描到任意 text/plain 就立即返回。text/plain 存在只说明 MIME 结构里有这个部件;它是否入选,还取决于调用参数、部件位置、Content-Disposition,以及 multipart/related 的根部件选择。

AI台式电脑工作台示意图
AI台式电脑维护示意图,非真实门店、技师或客户实拍。

适用:临沂兰山区台式电脑上使用 Python 3.14 标准库处理邮件内容的场景。Windows 只是运行环境,这里讨论的是 Python email 包中 EmailMessage.get_body 的候选规则,不应把它写成 Windows 邮件接口的行为。核对前要确认实际解释器版本和原调用,不运行客户程序,也不改生产数据。

观察:先看去敏后的 MIME 结构,而不是只看邮件里是否出现 text/plain。若某个部件带有 Content-Disposition,只有值为 inline 时才可能成为候选,attachment 不会入选;如果看到 text/plain 却返回了其他正文或 None,应检查该部件是否被标记为附件。再检查 preferencelist 和调用对象:默认偏好列表为 related、html、plain,在 multipart/related 上调用 get_body 且未传非默认偏好时,会返回该对象自身;如果偏好列表中不包含 related,则遇到 related 时会把其根部件或根部件的子部件纳入候选。遇到 multipart/related 时,还要看 start 参数与 Content-ID:找到匹配 Content-ID 的部件时,只在该部件中寻找候选;没有匹配时按首个默认根部件处理。最后看返回值:若所有候选都不匹配偏好,返回 None,这只能说明没有候选命中,不能证明原文缺失。没有 Content-Type 或 Content-Type 无效的部件会按 text/plain 处理,也可能让结果看起来不合预期。

风险:把 None 直接判断为原文丢失,可能导致错误重发、错误补录或误改生产数据;在未确认安全前打开或渲染未知附件、HTML 内容,会扩大暴露面;只凭搜索到 text/plain 就改调用参数,也可能掩盖真正的结构问题。处理时应只看去敏 MIME 结构与调用参数、返回值和日志,不打开或渲染未知附件,不重发邮件,不运行客户程序。

下一步:整理一份去敏材料,包括实际解释器版本、get_body 的调用对象与 preferencelist、各相关部件的 Content-Type、Content-Disposition、multipart/related 的 start 与 Content-ID 对应关系、返回值及必要日志。可拨 400-877-9605 咨询;电脑快修网是信息展示与第三方维修对接平台,电话只作咨询,实际范围和安排需确认。 返回值是选中的邮件部件对象,可能是multipart/related对象自身,不是自动解码后的正文字符串;应先核返回对象的类型和结构,不直接打开未知HTML。