2

您好,我想从位于磁盘上的现有邮件项创建一个 Outlook.MailItem(我相信)。我将路径存储在字符串中,并希望访问以从中保存正文和附件。

我似乎无法弄清楚如何在 c# 中打开它并访问它。

目前我有一些类似的东西

其中 fl 的计算结果类似于 "C:\users\msgs\email.msg"

谢谢你的时间

Outlook.Application app = new Outlook.Application();

        try
        {

            foreach (String fl in Directory.GetFiles(docInfo.LocalPath + _preprocessorDirectory))
            {
                if (Regex.IsMatch(fl.Trim(), _regex, RegexOptions.IgnoreCase))
                {

                   Outlook.MailItem email = new Outlook.MailItem(fl);
                   SaveAttachments(email);
                   SaveBody(email);
                }
            }
        }
        catch (Exception ex)
        {
            logger.Error("Error in Process for document " + docInfo.OriginalPath, ex);
            callback.Invoke(docInfo, false);
        }
        return false;
4

2 回答 2

7

要在 Outlook 中打开项目,请尝试:

var email = (Outlook.MailItem)app.Session.OpenSharedItem(fl)

从那里,您也可以访问该Attachments属性和Body属性。

另外,正如我在评论中提到的,如果Regex.IsMatch要确定文件扩展名,请改用Path.GetExtension ()

于 2011-07-27T17:53:06.250 回答
1

我使用了这个 NuGet 包:https ://www.nuget.org/packages/MSGReader/

似乎工作正常。我更喜欢它而不是 MS OutlookApi 库,因为它不需要安装 Outlook。

我很欣赏它不会像您在问题中所要求的那样创建 MailItem 的实例-但它将使您能够提取保存单个附件和正文...

于 2014-10-29T20:18:40.940 回答