我当前的项目在基于Microsoft Exchange 2010的电子邮件地址上运行服务,专门用于将自定义规则应用于传入的电子邮件。
当我浏览可能的基于C#的解决方案时,EWS托管API似乎是最适合我的API。我找到了我需要的每个电子邮件操作,但是有一个非常大的错过了...将电子邮件保存到.msg
文件。考虑到Outlook的动作是多么简单(只需从Outlook拖放到任何文件夹),这对我来说是非常令人惊讶的。
这是绝对的要求,因为用户通过拖放来保持其电子邮件的组织。我有没有想过用EWS做错的方法?到目前为止,我只发现了两种非EWS方式:
我很惊讶这样的基本操作需要做大量的工作并且想知道,有没有简单的方法将电子邮件保存到.msg
文件?
最糟糕的情况是,是否存在非EWS API,基于C#的方法?
谢谢
修改
我已经探索了.eml
导出解决方案。问题是我们使用Outlook 2007,它不支持eml格式。 .msg
几乎是这里的要求
答案 0 :(得分:4)
答案 1 :(得分:0)
有一种非EWS API,基于C#的方法可以完全满足您的需求:
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文件的功能。