获取Outlook MailItem的Content-Type

时间:2016-08-10 00:31:55

标签: vsto outlook-addin

我正在使用C#中的Outlook VSTO,目标是Outlook 2010.我需要获取消息的MIME内容类型(想想text/plain或其更奇特的替代方案)。我能找到的唯一地方就是邮件标题,这是一个长字符串,我不想手动阅读和解析。

MSDN记录PidNameContentType属性(alternate link),但我无法使其工作。任何类似的事情总是会失败(找不到)。

String ct = mail.PropertyAccessor.GetProperty(
    "urn:schemas:mailheader:content-type"); // Not found
String ct2 = mail.PropertyAccessor.GetProperty(
    "http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/content-type"); // Not found

奇怪的是,对于类似的documented example,这甚至都失败了:

String ct2 = mail.PropertyAccessor.GetProperty(
    "http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/content-class"); // Not found

另一方面,一些“更常见”的标题,如urn:schemas:mailheader:subject,可以正常工作。

我刚刚使用PropertyAccessor错了吗? Outlook是否实际上没有解析Content-Type标头,我只需要手动完成它?有没有其他方法来获取此标题的内容?

2 个答案:

答案 0 :(得分:0)

消息的内容类型就是消息,对吧?

使用OutlookSpy(单击IMessage)或MFCMAPI查看可用属性以查看可用属性。

答案 1 :(得分:0)

如何首先获取整个标题,然后搜索该字符串以获得所需内容?

Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E" 
Outlook.PropertyAccessor olPA = olkMsg.PropertyAccessor;
String Header = olPA.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS);

来源:Code Project