如何使用 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&lt;PostItem&gt;(); 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)进行模拟

如何使用 EWS 托管 API 从 Microsoft Exchange 检索所有联系人?

使用 EWS 托管 API 读取自定义列

EWS 托管 API 双跳

Folder.WellKnownFolderName 在 EWS 托管 API 和 Exchange 2013 中为空

EWS API - 在会议上更新