在 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 的现有味精的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA 连接 Outlook 以在根文件夹中创建文件夹