Mailitem.SentOnBehalfOfName:检查权限在Exchange
问题描述:
我开发了一个小程序,发送报告给我们的客户,应该由每个员工使用。通常应该以公司的名义发送电子邮件,但是有些专业人员没有被授予这样的权限。Mailitem.SentOnBehalfOfName:检查权限在Exchange
在这种情况下,电子邮件会出现由他们所发送。
如果我设置属性Mailitem.SentOnBehalfOfNamem和用户没有被授权访问,邮件弹回。 但是,我需要在发送电子邮件之前验证用户是否具有权限。
顺便说一句,该服务器正在使用Exchange Server 2008.
在此先感谢!
答
您将需要访问代表其给定用户可以发送用户的PR_EMS_AB_PUBLIC_DELEGATES_BL_O
名单。
Outlook对象模型不公开这些信息。您可以使用扩展MAPI(C++或Delphi只)访问PR_EMS_AB_PUBLIC_DELEGATES_BL_O
- 看看OutlookSpy名单:当前用户,单击IMAPISession中,QueryIdentity,转到PR_EMS_AB_PUBLIC_DELEGATES_BL_O标签。
如果是C++或Delphi以外的语言,可以使用Redemption及其RDOAddressList。 IsDelegateFor
集合。在VBA的例子:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set AddressEntry = Session.CurrentUser
'Debug.Print "-- Delegates (who can send of behalf of " & AddressEntry.Name & ")"
for each AE in AddressEntry.Delegates
MsgBox AE.Name
next
'Debug.Print "-- Is delegate for (can send on behalf of these users)"
for each AE in AddressEntry.IsDelegateFor
MsgBox AE.Name
next
您也可以使用PowerShell:https://msdn.microsoft.com/en-us/library/ff852815(v=exchsrvcs.149).aspx#View%20Send%20As% 20许可 –
但PS cmdlet只能在运行Exchange的计算机上工作,或者至少以管理域用户身份登录时才能工作。而不是在普通用户使用Outlook发送电子邮件的机器上。 –