【问题标题】:IMAP body command. How to get just the text or html part of the body?IMAP 正文命令。如何仅获取正文的文本或 html 部分?
【发布时间】:2011-10-07 19:11:07
【问题描述】:

我有一个关于 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。对不起,如果我遗漏了任何细节,但请询问!

谢谢。

【问题讨论】:

    标签: c# imap


    【解决方案1】:

    电子邮件信息以 MIME 格式存储 - 它允许创建无限深度的树结构。 您不能仅通过检查内容类型来假设此树结构的外观。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-12
    • 2013-03-25
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 2015-09-16
    • 2013-11-02
    • 2019-07-13
    相关资源
    最近更新 更多