各种Ews/Outlook项目的文件扩展名是什么?

3

我需要使用EWS API检索的ItemAttachments但我不知道所有不同项目类型的文件扩展名。我只能获取EmailMessage和Contact类型项的扩展名。以下是代码:

if (attachment is ItemAttachment)
{
    var itemAttachment = attachment as ItemAttachment;

    itemAttachment.Load(new PropertySet(ItemSchema.MimeContent));

    var fileExtension = "";

    if (itemAttachment.Item is EmailMessage)
    {
        fileExtension = ".eml";
    }
    else if (itemAttachment.Item is PostItem)
    {
        fileExtension =??  
    }
    else if (itemAttachment.Item is Contact)
    {
        fileExtension = ".vcf";
    }
    else if (itemAttachment.Item is ContactGroup)
    {
        fileExtension =??
    }
    else if (itemAttachment.Item is Appointment)
    {
        fileExtension = ??
    }
    else if (itemAttachment.Item is Task)
    {
        fileExtension = ??
    }
}

请问其他项目的文件扩展名是什么?
1个回答

1
您已正确获取了EmailMessageContact项的MIME内容。 Appointment的MIME内容代表一个.ics文件(请注意,如果它是带有参与者的约会,则不会获得完整的表示)。我不知道PostItemContactGroupTask项的MIME内容代表特定的文件类型。 您需要解析MIME流(或请求每个项目上的属性),并从中创建文件。例如,您可以解析任务属性并创建vTodo文件。我建议您寻找某种标准文件类型以用于ContactGroup(分发列表)和PostItem,并将结果解析为该文件类型。
总的来说,建议您不要使用MIME内容,因为它可能没有您需要的所有属性。 为了实现全保真度并提高性能(来自服务),请请求附件所需的属性,并将结果解析为最终文件类型。

谢谢Michael!!! 是的,我有EmailMessage和Contact的MIME内容,并将它们分别保存为.eml和.vcf文件。我可以在打开保存的MIME内容时看到所有内容都完好无损。您是否有文档列出了从MIME中漏掉的属性?我希望可以将itemattachment简单地视为文件附件,并以某种标准格式下载文件,而不必担心mime解析/请求特定属性等问题。这太尴尬了。我想知道为什么必须这样做。 - Sameer
@Mokchhya - 欢迎。不,我们没有关于 MIME 流返回哪些属性(或不返回)的文档。我们试图阻止使用 MIME 流,因为将数据库属性转换为 MIME 流会产生服务器成本。MIME 流是为了向后兼容而公开的。我们试图推广实现者仅请求他们需要的属性,而不是整个属性包。你能告诉我你想要实现什么吗? - Michael Mainer
1
我需要将附件原封不动地获取并保存为文件。 - Sameer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接