如何使用 EWS 托管 API 2.0 创建笔记
Posted
技术标签:
【中文标题】如何使用 EWS 托管 API 2.0 创建笔记【英文标题】:How to create notes using EWS Managed API 2.0 【发布时间】:2015-06-03 08:23:24 【问题描述】:即使查看 MSDN's Exchange 2013 - 101 Code Samples,我也找不到使用 EWS Managed API 2.0 创建笔记的示例。在Folders and items in EWS in Exchange 上,我认为最合适的项目类型 PostItem 但我的测试尝试在 Notes 文件夹中创建此类项目失败。或者,有没有可能在这个库中没有用于创建笔记的 API?
【问题讨论】:
【参考方案1】:PostItem 与 Notes 文件夹中的便笺不同。 PostItem 代表消息类别为IPM.Post
的项目。另一方面,Notes 使用消息类IPM.StickyNote
。托管 API 不直接支持这些项目。您可以将它们检索为EmailMessage
对象,如果您手动设置所需的属性,您甚至可以将它们创建为EmailMessage
对象。 Glen 在他的博客上有一篇很好的文章:http://gsexdev.blogspot.com/2009/07/creating-sticky-notes-in-ews-managed.html
【讨论】:
谢谢,我找到了this C# example。【参考方案2】:看看 PostItem,他们应该做你想做的事。 PostItem
样本
var items = new List<PostItem>();
for (int i = 0; i != 10; ++i)
var m = new PostItem(service);
m.Subject = "Note " + i.ToString();
m.Body = new MessageBody(BodyType.Text, "A test note");
m.Save();
【讨论】:
谢谢,所以应该使用 PostItem。我尝试在 WellKnownFolderName.Notes 文件夹中创建笔记,但出现错误“无法在不是邮件文件夹的文件夹中创建帖子项目”... 不设置文件夹会怎样? 代码无法编译。你知道 Folder.Bind 方法吗? 不完全是。您能否在问题中发布您的代码? 当然,var items = new List<PostItem>(); for (int i = 0; i != maxItems; ++i) var m = new PostItem(service); m.Subject = "Note " + i.ToString(); m.Body = new MessageBody(BodyType.Text, "A test note"); items.Add(m); var folder = Folder.Bind(service, WellKnownFolderName.Notes, new PropertySet()); var responses = service.CreateItems(items, folder.Id, MessageDisposition.SendOnly, SendInvitationsMode.SendToAllAndSaveCopy);
MessageDisposition.SendOnly, SendInvitationsMode.SendToAllAndSaveCopy);`【参考方案3】:
var guid = new Guid("0006200E-0000-0000-C000-000000000046");
var colour = new ExtendedPropertyDefinition(guid, 0x8B00, MapiPropertyType.Integer);
var width = new ExtendedPropertyDefinition(guid, 0x8B02, MapiPropertyType.Integer);
var height = new ExtendedPropertyDefinition(guid, 0x8B03, MapiPropertyType.Integer);
var left = new ExtendedPropertyDefinition(guid, 0x8B04, MapiPropertyType.Integer);
var top = new ExtendedPropertyDefinition(guid, 0x8B05, MapiPropertyType.Integer);
var items = new List<EmailMessage>();
for (int i = 0; i != maxItems; ++i)
var m = new EmailMessage(service);
m.Subject = "Note " + i.ToString();
m.ItemClass = "IPM.StickyNote";
m.Body = new MessageBody(BodyType.Text, "A test note");
m.SetExtendedProperty(colour, 1);
m.SetExtendedProperty(width, 200);
m.SetExtendedProperty(height, 166);
m.SetExtendedProperty(left, 200);
m.SetExtendedProperty(top, 200);
items.Add(m);
var folder = Folder.Bind(service, WellKnownFolderName.Notes, new PropertySet());
var responses = service.CreateItems(items, folder.Id, MessageDisposition.SaveOnly, SendInvitationsMode.SendToNone);
【讨论】:
以上是关于如何使用 EWS 托管 API 2.0 创建笔记的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 EWS 托管 API 从 Microsoft Exchange 检索所有联系人?