6

Web 参照を介して Exchange Web サービスにアクセスするクライアントで作業しています。(マネージ API ではありません)。EWS を使用するのはこれが初めてなので、見落とした単純なミスであることを願っています。

私は、電子メールメッセージを受け取り、それを受信トレイから宛先フォルダーに移動することになっている MoveItem というメソッドを持っています。このコードを実行すると、アイテムは受信トレイから消えますが、宛先フォルダーには表示されません。オンラインで例を見て数日過ごしましたが、同様の問題を抱えている人を見つけることもできませんでした. 誰が私が間違っているのか教えてもらえますか? 前もって感謝します

スコット

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);
}

}
4

2 に答える 2

5

ここでは専門家ではありませんが、これはアイテムを取得してフォルダーに移動するために使用した次のコードです。

        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 についての 1 つのことは、フォルダーに移動するとき、フォルダーの ID が重要であるということです。この例では、まず受信トレイでフォルダーを見つけてから、メッセージにアクセスします。したがって、個々のメッセージに関するコードは、フォルダーが見つかった後に実行されます。

于 2012-12-04T19:16:39.810 に答える
-2

私は同じ問題を抱えています。移動されたメッセージはフォルダー (outlook.com) には存在しませんが、新しく割り当てられた ID を使用して API を介して取得できます。

Outlook.com では、メッセージ本文の読み込み中にエラーが発生して検索で見つけることができます。 Error: Your request can't be completed right now. Please try again later.

于 2013-07-16T10:39:00.753 に答える