You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSTO Outlook Add-in如何获取已打开.msg文件的完整文件名?

在VSTO Add-in中获取打开的.msg文件完整路径

核心方案:通过PropertyAccessor读取MAPI属性

当从文件系统打开.msg文件时,对应的MailItem对象存在特定MAPI属性可获取原文件路径,具体实现步骤如下:

  • 获取当前打开的MailItem实例:
    可通过Application.ActiveInspector().CurrentItem获取当前检查器中的项目,或在Application.ItemLoad事件中捕获加载的项目。

  • 使用PropertyAccessor读取目标属性:
    关键属性为PR_PATHNAME_W,对应MAPI标签0x0047001F,命名空间URL为http://schemas.microsoft.com/mapi/proptag/0x0047001F。

    示例代码:

    Outlook.MailItem mailItem = Application.ActiveInspector().CurrentItem as Outlook.MailItem;
    if (mailItem != null)
    {
        try
        {
            Outlook.PropertyAccessor propAccessor = mailItem.PropertyAccessor;
            string fullFilePath = propAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x0047001F").ToString();
            // 此处可使用fullFilePath变量
        }
        catch (Exception)
        {
            // 若项目不是从本地文件打开(如Outlook文件夹中的邮件),该属性不存在,需处理异常
        }
    }
    
  • 备选属性:
    若上述属性无法获取路径,可尝试PR_ORIGINAL_FILE_NAME_W,对应MAPI标签0x3707001F,命名空间URL为http://schemas.microsoft.com/mapi/proptag/0x3707001F。

注意事项

  • 该属性仅在直接从文件系统打开.msg文件时存在,从Outlook邮箱/文件夹打开的邮件不会包含此属性。
  • 使用OutlookSpy验证时,需打开目标.msg文件后切换到PropertyAccessor标签,搜索对应的MAPI标签(如0x0047001F)即可找到该属性。

内容的提问来源于stack exchange,提问作者Funny Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:40:08