我有关于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。很抱歉,如果我遗漏了任何细节,请稍问!
感谢。
答案 0 :(得分:1)
电子邮件以MIME格式存储 - 它允许创建具有无限深度的树结构。 仅通过检查内容类型,您无法假设此树结构如何。
您应该使用BODYSTRUCTURE重新创建树结构而不下载消息,之后您可以决定需要获取哪些部分。