提问者:小点点

使用EWS管理的API将电子邮件保存到. MSG文件


我目前的项目在基于Microsoft Exchange 2010的电子邮件地址上运行一项服务,致力于对收到的电子邮件应用自定义规则。

当我浏览可能的基于 C# 的解决方案时,EWS 托管 API 似乎是最适合我的 API。我需要的每个电子邮件操作都找到了,但缺少一个非常大的电子邮件操作......将电子邮件保存到.msg文件。这对我来说非常令人惊讶,因为它从 Outlook 进行操作是多么容易(只需从 Outlook 拖放到任何文件夹)。

这是绝对的要求,因为用户通过拖放来组织他们的电子邮件。我有没有错过用EWS做这件事的方法?到目前为止,我只找到了两种非EWS的方法:

  • 使用我不确定我们能买得起的第三方库(IndependentSoft)
  • 使用带有消息保存和 Outlook 规则的更复杂的方法来执行自定义操作(操作为“运行消息保存”)

我很惊讶这样的基本操作需要这么多工作,想知道,有没有简单的方法可以将电子邮件保存到.msg文件中?

最坏的情况下,有没有一个非EWS API,基于C#的方法来做到这一点?

谢谢你。

编辑:

我已经探索了 .eml 导出解决方案。问题是我们使用不支持 eml 格式的 Outlook 2007。.msg几乎是这里的要求


共2个答案

匿名用户

.msg是一种格式,只有 Outlook 本身使用,而不是您与之通信的 Exchange 服务器。

就此而言,可以很容易地创建一个.eml文件。

看看这里,你如何做到这一点。

匿名用户

有一个基于 C# 的非 EWS API,方法可以完全完成您的查找:

http://www.independentsoft.de/exchangewebservices/tutorial/downloadmessagetomsgfile.html

using System;
using System.IO;
using System.Net;
using Independentsoft.Exchange;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            NetworkCredential credential = new NetworkCredential("username", "password");
            Service service = new Service("https://myserver3/ews/Exchange.asmx", credential);

            try
            {
               ItemShape itemShape = new ItemShape(ShapeType.Id);
               FindItemResponse inboxItems = service.FindItem(StandardFolder.Inbox, itemShape);

               for (int i = 0; i < inboxItems.Items.Count; i++)
               {
                   Independentsoft.Msg.Message msgFile = service.GetMessageFile(inboxItems.Items[i].ItemId);
                   msgFile.Save("c:\\test\\message" + i + ".msg", true);
               }
            }
            catch (ServiceRequestException ex)
            {
               Console.WriteLine("Error: " + ex.Message);
               Console.WriteLine("Error: " + ex.XmlMessage);
               Console.Read();
            }
            catch (WebException ex)
            {
               Console.WriteLine("Error: " + ex.Message);
               Console.Read();
            }
        }
    }
 }

它提供了将邮件和其他项目保存为Outlook.msg文件的功能。