我目前的项目在基于Microsoft Exchange 2010的电子邮件地址上运行一项服务,致力于对收到的电子邮件应用自定义规则。
当我浏览可能的基于 C# 的解决方案时,EWS 托管 API 似乎是最适合我的 API。我需要的每个电子邮件操作都找到了,但缺少一个非常大的电子邮件操作......将电子邮件保存到.msg
文件。这对我来说非常令人惊讶,因为它从 Outlook 进行操作是多么容易(只需从 Outlook 拖放到任何文件夹)。
这是绝对的要求,因为用户通过拖放来组织他们的电子邮件。我有没有错过用EWS做这件事的方法?到目前为止,我只找到了两种非EWS的方法:
我很惊讶这样的基本操作需要这么多工作,想知道,有没有简单的方法可以将电子邮件保存到.msg
文件中?
最坏的情况下,有没有一个非EWS API,基于C#的方法来做到这一点?
谢谢你。
编辑:
我已经探索了 .eml
导出解决方案。问题是我们使用不支持 eml 格式的 Outlook 2007。.msg
几乎是这里的要求
.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文件的功能。