首页 > 解决方案 > Outlook 不返回任何内容的限制方法

问题描述

试图找出如何为限制方法创建正确的过滤器。我试图只显示特定用户的日历约会。到目前为止,我已经让它显示日期过滤器的所有约会,但理想情况下只需要过滤组织者。我尝试过类似的东西RestrictString := ('[requiredAttendees] = 'Joe Bloggs');,但它不起作用。

下面是我列出所有约会并显示约会组织者(必需的与会者)以及主题和开始时间等的代码。但我只想对给定的人执行此操作。

  Namespace := Outlook.GetNamespace('MAPI'); // represents a NameSpace object.
  Recipient := Namespace.CreateRecipient('shared@mailbox.com');
  Recipient.Resolve;
  Folder := Namespace.GetSharedDefaultFolder(Recipient, olFolderCalendar);
  Items := Folder.Items;

  Items.Sort('[Start]', true);
  Items.IncludeRecurrences := true;

   RestrictString :=
   '@SQL="http://schemas.microsoft.com/mapi/proptag/0x0E04001F" like ''%joe bloggs%''';

  RestrItems := Items.Restrict(RestrictString);
  Memo1.clear;
  if (RestrItems.count = 0) then Memo1.lines.add('No appointments');

  for i := 1 to RestrItems.count do
  begin

    Appointment := Items.Item(i);

    Memo1.lines.add(' ');
    Memo1.lines.add(Appointment.requiredAttendees);
    Memo1.lines.add(Appointment.subject);
    Memo1.lines.add(Appointment.Start);
    Memo1.lines.add(Appointment.End);
    Memo1.lines.add(' ');

  end;

  Outlook := UnAssigned;

任何指针最受赞赏。我查看了各种其他问题和文档,但还没有完全掌握。

标签: delphioutlookcalendarexchange-server

解决方案


Restrict/ FindOutlook 对象模型中的方法不会对收件人(或附件)创建子限制。您可以在扩展 MAPI(C++ 或 Delphi)中执行此操作,但不能在 Outlook 对象模型中执行此操作。

在 OOM 中您可以做的最好的事情是搜索PR_DISPLAY_TO扩展 MAPI 属性(如果单击 IMessage 按钮,您可以在OutlookSpy中看到它)。它对应To于OOM中的属性,并用“;”填充 保存项目时收件人的分隔显示名称。它可能包括也可能不包括电子邮件地址。以下查询应该适用Items.Restrict于您的情况

@SQL="http://schemas.microsoft.com/mapi/proptag/0x0E04001F" like '%Joe Bloggs%'

如果使用Redemption是一个选项,它是RDOItems的版本。Restrict/Find对收件人姓名/地址/SMTP 地址创建子限制(您可以在 SQL 查询中指定ToCCBCC或)。Recipients


推荐阅读