当前位置: 首页 > 知识库问答 >
问题:

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

司徒高寒
2023-03-14

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

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

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

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

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

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

谢谢你。

编辑:

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

共有2个答案

胡景焕
2023-03-14

有一个基于 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文件的功能。

夹谷奇
2023-03-14

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

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

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

 类似资料:
  • Im正在尝试分析outlook中的.msg文件以获取MIME内容,以便将该文件另存为EML。我正在使用Exchange Web服务在EML通过Exchange服务器上的日志收件箱时保存EML,但有些电子邮件需要在事后通过outlook add in保存,不过将它们变成EML/MIME格式似乎比较困难。 任何洞察力都是非常有用的。

  • 我想出了一个解决办法,就是导入所有用户的电子邮件文件夹。这个解决方案是工作的,它只是繁琐的维护,因为我们几乎每周都有新的/删除的用户。

  • 我正试图传送一封电子邮件到控制器,但由于某些原因它不工作,我收到404错误。 当我将email变量更改为没有“.”的字符串时。它起作用了。 这就是它在客户端的样子- 在控制器里- 感谢任何帮助!!谢谢

  • 我目前正在编写一个PowerShell脚本,它需要从特定邮箱中提取所有邮件作为.eml或.msg文件,并将它们保存在备份服务器上。我将powershell版本5与Exchange 2010管理控制台模块(EWS)一起使用。 目前,我的脚本能够访问收件箱文件夹中的所有邮件及其属性,如正文、主题、附件等。然而,我找不到一种简单的方式或方法来导出消息(及其附件)。所以我的问题是,Exchange 201

  • 电子邮件功能是Web框架中最受欢迎的功能。 FuelPHP提供了一个优雅的电子邮件类捆绑为一个包。 它用于发送简单的纯文本电子邮件以及带有多个附件的高级富文本电子邮件。 它支持以下功能 - 纯文本邮件,HTML邮件,附件和内联附件。 配置 (Configuration) 要在应用程序中启用电子邮件功能,我们需要在主配置文件fuel/app/config/config.php中按照以下指定加载电子邮

  • 现在,我正在使用带有PowerShell的Exchange Web Services API从Exchange中下拉特定的电子邮件,并将它们保存为EML文件。这很管用;但是,用户/客户要求电子邮件为msg格式。我看到有两种方法可以做到这一点: null MSG vs EML要求(遵从性)没有灵活性。 编辑:这将在服务器上运行;所以我更希望这可以在没有安装Outlook的情况下完成。

  • 问题内容: 我需要备份PST文件(存储空间)中包含的电子邮件。我正在使用libpst,这是我在网上找到的唯一免费库(http://code.google.com/p/java- libpst/ ) 这样我就可以访问每一封电子邮件中的所有信息(主题,正文,发件人等),但是我需要将它们放在文件中 在这里有人说您可以从“ javax.mail.Message”对象创建一个EML文件: 在Java中创建一

  • 我一直在使用IMAP,并在邮箱内使用(imap_createmailbox)创建了一个文件夹。目前为止,一切都好。问题是我一直在尝试将一些电子邮件(使用imap_mail_move功能)移动到自己创建的这个文件夹中,但我没有运气,根本没有电子邮件被移动。 以下是我一直在做的事情: 有人知道我为什么不能将这些电子邮件移动到新文件夹中吗。 PS:如果我从电子邮件收件箱中创建一个文件夹,那么电子邮件会按