IMAP主体命令.如何获得正文的文本或html部分

本文关键字:文本 html 部分 正文 主体 命令 何获得 IMAP | 更新日期: 2023-09-27 18:10:24

我有一个关于FETCH的查询…]命令。

获取正文的文本或html部分的最佳方法是什么?我认为BODY[TEXT]命令可以做到这一点,但它也会返回附件等,这严重影响了性能。

目前,我是这样做的(c#代码):

        if (contentType != null)
        {
            switch (contentType.ToLower())
            {
                case "multipart/alternative":
                case "text/plain":
                case "text/html":
                    body = " BODY[1]";
                    break;
                case "multipart/related":
                case "multipart/signed":
                    body = " BODY[1.1]";
                    break;
                case "multipart/report":
                    body = " BODY[1]";
                    break;
                case "multipart/mixed":
                    if (mail.MailBody.TextBodyPartCount == 1)
                        body = " BODY[1]";
                    else if (mail.MailBody.TextBodyPartCount == 2)
                    {
                        if (bodyType == BodyType.Plain)
                            body = " BODY[1.1]";
                        else
                            body = " BODY[1.2]";
                    }
                    else
                        body = " BODY[1]";
                    break;
                default:
                    body = " BODY[1]";
                    break;
            }
        }
        else
        {
            body = " BODY[1]";
        }

这在大多数情况下都有效,但在某些情况下它返回NIL。如果我遗漏了一些细节,很抱歉,但请一定要问!

谢谢。

IMAP主体命令.如何获得正文的文本或html部分

电子邮件以MIME格式存储-它允许创建具有无限深度的树状结构。您不能仅通过检查内容类型来假设这个树结构是什么样的。

您应该使用BODYSTRUCTURE在不下载消息的情况下重新创建树结构,然后您可以决定需要获取哪些部分。