我正在使用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标头,我只需要手动完成它?有没有其他方法来获取此标题的内容?
答案 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