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

时间:2011-10-03 15:53:38

标签: c# imap

我有关于FETCH ... BODY [...]命令的查询。

获取正文的文本或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。很抱歉,如果我遗漏了任何细节,请稍问!

感谢。

1 个答案:

答案 0 :(得分:1)

电子邮件以MIME格式存储 - 它允许创建具有无限深度的树结构。 仅通过检查内容类型,您无法假设此树结构如何。

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