在 c# 中创建/打开从路径到新 Outlook.MailItem 的现有味精

Posted

技术标签:

【中文标题】在 c# 中创建/打开从路径到新 Outlook.MailItem 的现有味精【英文标题】:Create/Open existing msg from path to new Outlook.MailItem in c# 【发布时间】:2011-10-14 11:53:52 【问题描述】:

您好,我想从位于磁盘上的现有项目创建一个 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;

【问题讨论】:

你为什么使用Regex?是不是要判断它是否是一个味精文件?您可以使用Path 类。试试if(Path.GetExtension(fl) == ".msg") 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

正是我想要的,但不知道如何到达那里。来自 Java 的 c# 新手,谢谢。使用 app.session... 不是我的想法,而是要研究它的实际作用。谢谢。使用正则表达式来保持系统灵活性,因为对不同的文件使用不同的检查。 IE。图片、文档、pdf... 只需存储在 app.config 中即可在一个地方进行更改。谢谢。

以上是关于在 c# 中创建/打开从路径到新 Outlook.MailItem 的现有味精的主要内容,如果未能解决你的问题,请参考以下文章

在 Access 中创建 Outlook 收件箱电子邮件表

怎么更改OUTLOOK EXPRESS中邮件的存储路径

Excel VBA 连接 Outlook 以在根文件夹中创建文件夹

Microsoft Outlook 教程,如何在 Outlook 中创建、发送、答复和转发电子邮件?

如何在PHP中创建Outlook日历会议请求?

各位大侠,c#中创建目录和文件时的路径问题!!!!!求助!!!!!!!!