【问题标题】:Getting calendar's owner email address of an AppointmentItem获取 AppointmentItem 的日历所有者电子邮件地址
【发布时间】:2019-08-25 01:41:54
【问题描述】:

我正在开发一个 Outlook 加载项以将所有约会发送到网络应用程序,但我在始终获取 AppointmentItem 的“所有者”(而不是组织者)时遇到了一些麻烦。

例如,X 向 Y 和 Z 发送约会。 插件会从中获取三个约会项目,我正在尝试获取 X、Y 和 Z 的电子邮件地址。

我尝试查看 SendUsingAccount(有时设置为 null)或 Parent 属性,但似乎找不到我要查找的内容。

感谢您的帮助!

【问题讨论】:

  • 您是指约会所在邮箱的所有者吗?还是约会的组织者?
  • 你好 Dmitry,我是指约会所在邮箱的所有者。
  • 约会来自默认邮箱、添加到配置文件的代理邮箱,还是通过文件|打开的共享日历文件夹?打开 |其他用户的文件夹?
  • 如果我没记错的话,它来自默认邮箱。我有一个包含多个帐户的个人资料,我尝试创建一个约会(从个人资料的一个帐户)并邀请其他帐户,我正在尝试获取与这些帐户的 AppointmentItem 相关的每个帐户的电子邮件地址以前创建的约会。

标签: c# outlook vsto outlook-addin


【解决方案1】:

如果它是默认帐户并且假设在 Outlook 中只配置了一个主要的 Exchange 帐户,您可以简单地使用Application.Session.CurrentUser

更新
如果您从非默认 Exchange 帐户访问约会,则可以检索父级 Store - 您可以通过 AppointmentItem.Parent(它将是 MAPIFolder)进行此操作,然后使用 MAPIFolder.StoreStoreID 属性.然后,您可以使用Account.DeliveryStore 将商店与Namespace.Accounts 集合中的Account 对象匹配。使用Namespace.CompareEntryIDs比较两个store entry id,不要直接比较字符串。
一旦您可以使用 Account 对象,您就可以使用 Account.CurrentUser 属性。

如果使用Redemption 是一个选项(我是它的作者),它会公开RDOExchangeMailboxStore.Owner 属性,这样您就不必通过帐户:只需创建RDOSession 对象,设置其MAPIOBJECT 属性从 Outlook 到 Application.Session.MAPIOBJECT,使用 RDOSession.GetMessageFromIDGetRDOObjectFromOutlookObject 重新打开约会约会,然后使用 RDOAppointmentItem.Parent.Store.Owner

【讨论】:

  • 我误解了,对于每个帐户,我需要他们的电子邮件地址,而不是主帐户的电子邮件地址,所以如果涉及四个帐户,我将有四个不同的电子邮件。我正在考虑使用 AppointmentItem.Parent.Parent.Name,这似乎是我正在寻找的,但我不确定它是否总是一个电子邮件地址。
  • 这就是我问约会地点的原因。 “涉及四个账户”究竟是什么意思?同样,是默认邮箱、添加到配置文件的委托邮箱,还是通过 File | 打开的共享日历文件夹。打开 |其他用户的文件夹?
  • 我的意思是我的个人资料中有四个帐户。我做了一个测试,其中一个帐户邀请其他三个帐户进行约会。在我的程序中,我创建了一个循环,在其中恢复了所有约会项目(所以我得到了四个 AppointmentItem 对象,每个帐户一个,但所有这些 AppointmentItem 都与我刚刚创建的同一个约会相关)并且我试图获取链接到每个帐户的电子邮件地址(因此有四个不同的值)。通过使用 CurrentUser,我将获得同一个用户四次。我不认为这是一个共享日历,也没有委托。
  • 感谢 Dmitry 的更新,这正是我所需要的。
猜你喜欢
  • 2011-11-07
  • 2011-09-24
  • 2012-07-05
  • 2020-08-07
  • 1970-01-01
  • 2022-05-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
相关资源
最近更新 更多