首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用EWS托管API将电子邮件保存到.MSG文件

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

Stack Overflow用户
提问于 2016-12-19 17:15:06
回答 2查看 3.8K关注 0票数 3

我当前的项目运行一个基于Microsoft 2010的电子邮件地址上的服务,专门用于将自定义规则应用于传入的电子邮件。

当我浏览可能的基于C#的解决方案时,EWS托管API似乎是我使用的最好的API。我需要的每一封邮件都被找到了,但是有一个非常大的丢失.将电子邮件保存到.msg文件。这对我来说是相当令人惊讶的,因为它是如此容易从Outlook (简单地从Outlook拖放到任何文件夹)。

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

  • 使用第三方图书馆,我不确定我们是否能负担得起(IndependentSoft)
  • 使用带有MessageSave和outlook规则的更复杂的方法来执行自定义操作(操作为“运行MessageSave”)

我很惊讶,这样一个基本的行动需要这么多的工作,并想知道,有什么简单的方法来保存电子邮件到一个.msg文件吗?

最坏的情况是,是否有一个非EWS,基于C#的方法这样做?

谢谢

编辑:

我探索了.eml出口解决方案。问题是我们使用Outlook 2007,它不支持eml格式。.msg基本上就是这里的要求

EN

回答 2

Stack Overflow用户

发布于 2016-12-23 14:31:05

.msg是一种格式,它只使用outlook本身,而不是与您通信的交换服务器。

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

看看here,你是怎么做到的。

票数 3
EN

Stack Overflow用户

发布于 2017-01-27 10:36:25

有一个非EWS,基于C#的方法,可以精确地完成您想要的操作:

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

代码语言:javascript
运行
复制
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文件的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41227743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档