【问题标题】:Exchange Web Service, move an item from Inbox it gets removed from Inbox but doesn't show up in the destination FolderExchange Web 服务,从收件箱中移动一个项目,它会从收件箱中删除,但不会显示在目标文件夹中
【发布时间】:2012-09-25 11:02:35
【问题描述】:

我正在开发一个通过 Web 引用访问 Exchange Web 服务的客户端。 (不是托管 API)。这是我第一次使用 EWS,所以我希望这只是我忽略的一个简单错误。

我有一个名为 MoveItem 的方法,它应该接收电子邮件并将其从收件箱移动到destinationFolder。当我运行此代码时,该项目确实从收件箱中消失了,但它从未出现在目标文件夹中。我花了几天时间在网上查看示例,我也找不到其他有类似问题的人。谁能告诉我我做错了什么?提前致谢

斯科特

static void MoveItem(ExchangeServiceBinding esb, BaseFolderType destinationFolder, MessageType msg)
{
ItemIdType[] items = new ItemIdType[1] { (ItemIdType)msg.ItemId };
BaseFolderIdType destFolder = destinationFolder.FolderId;
MoveItemType request = new MoveItemType();
request.ItemIds = items;
request.ToFolderId = new TargetFolderIdType();
request.ToFolderId.Item = destFolder;

try
{
     MoveItemResponseType response = esb.MoveItem(request);
     ArrayOfResponseMessagesType aormt = response.ResponseMessages;
     ResponseMessageType[] rmta = aormt.Items;

    foreach (ResponseMessageType rmt in rmta)
    {
        if (rmt.ResponseClass == ResponseClassType.Error)
        {
              throw new Exception("Item move failed.");
        }
    }
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}

}

【问题讨论】:

  • 有人有什么想法吗?我仍然坚持这个问题。如果您有任何想法或需要我发布任何其他信息,请告诉我。谢谢
  • 在文件夹之间移动邮件时,ItemID 会发生变化。 stackoverflow.com/questions/4164069/…

标签: c# .net exchange-server exchangewebservices


【解决方案1】:

这里绝对不是专家,但这是我用来抓取项目并将其移动到文件夹中的以下代码:

        Folder rootfolder = Folder.Bind(service, WellKnownFolderName.MsgFolderRoot);
        rootfolder.Load();

        foreach (Folder folder in rootfolder.FindFolders(new FolderView(100)))
        {
            // Finds the emails in a certain folder, in this case the Junk Email
            FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.JunkEmail, new ItemView(10));

            // Enter your destination folder name below this:
            if (folder.DisplayName == "Example")
            {
                // Stores the Folder ID in a variable
                var fid = folder.Id;
                Console.WriteLine(fid);
                foreach (Item item in findResults.Items)
                {
                    // Load the email, move it to the specified folder
                    item.Load();
                    item.Move(fid);
                }

            }
        }

关于 EWS 的一件事是,当移动到文件夹时,文件夹的 ID 是关键。在此示例中,我首先在收件箱中找到文件夹,然后访问邮件。因此,任何有关单个消息的代码都将在找到文件夹之后进行。

【讨论】:

    【解决方案2】:

    我也有同样的问题。移动的消息在文件夹 (outlook.com) 中不存在,但可以通过具有新分配 ID 的 API 检索。

    Outlook.com 可以在加载邮件正文时在搜索中找到它,但出现错误: Error: Your request can't be completed right now. Please try again later.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-27
      • 2010-12-27
      • 1970-01-01
      • 2017-06-12
      • 2012-03-12
      • 2020-03-10
      • 2021-03-09
      • 1970-01-01
      相关资源
      最近更新 更多