gpt4 book ai didi

C# MS Exchange 将电子邮件移动到文件夹

转载 作者:太空狗 更新时间:2023-10-29 19:56:02 24 4
gpt4 key购买 nike

添加:感谢用户@grapkulec,我正在使用

using Microsoft.Exchange.WebServices.Data;

我正在尝试将电子邮件移动到我已经在 Outlook 中创建的文件夹(使用 MS Exchange)。到目前为止,我已经能够将电子邮件移动到草稿或另一个众所周知的文件夹名称,但没有成功将其移动到我创建的名为“示例”的文件夹。

foreach (Item email in findResults.Items)
email.Move(WellKnownFolderName.Drafts);

上面的代码有效;但我不想使用众所周知的文件夹。而且,如果我尝试将代码更改为:

email.Move(Folder.(Example));

email.Move(Folder.["Example"]);

它不会移动(在这两种情况下,都会抛出错误)。我发现了大量关于如何将电子邮件移动到 MSDN、SO 和通用 C# 上的文件夹的示例 - 但 只有 Outlook“众所周知”的文件夹(草稿、垃圾邮件等),这不适用于我创建的文件夹。

最佳答案

解决了!

无论多次尝试,Move 命令都失败了,因为 ID 格式错误。显然,移动操作不允许使用名称。我曾尝试将 DisplayName 作为标识符,这就是让我失望的原因。最后,我放弃了 DisplayName,这会有所帮助。相反,我通过将 ID 存储在一个变量中来指向 ID(它停止了烦人的“ID 格式错误”错误),并且移动成功了。

代码:

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

// This IF limits what folder the program will seek
if (folder.DisplayName == "Example")
{
// Trust me, the ID is a pain if you want to manually copy and paste it. This stores it in a variable
var fid = folder.Id;
Console.WriteLine(fid);
foreach (Item item in findResults.Items)
{
// Load the email, move the email into the id. Note that MOVE needs a valid ID, which is why storing the ID in a variable works easily.
item.Load();
item.Move(fid);
}
}
}

关于C# MS Exchange 将电子邮件移动到文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13685782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com