2017-06-15 61 views
0

我开发了一个小程序,发送报告给我们的客户,应该由每个员工使用。通常应该以公司的名义发送电子邮件,但是有些专业人员没有被授予这样的权限。Mailitem.SentOnBehalfOfName:检查权限在Exchange

在这种情况下,电子邮件会出现由他们所发送。

如果我设置属性Mailitem.SentOnBehalfOfNamem和用户没有被授权访问,邮件弹回。 但是,我需要在发送电子邮件之前验证用户是否具有权限。

顺便说一句,该服务器正在使用Exchange Server 2008.

在此先感谢!

回答

0

您将需要访问代表其给定用户可以发送用户的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及其RDOAddressListIsDelegateFor集合。在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 
+0

您也可以使用PowerShell:https://msdn.microsoft.com/en-us/library/ff852815(v=exchsrvcs.149).aspx#View%20Send%20As% 20许可 –

+0

但PS cmdlet只能在运行Exchange的计算机上工作,或者至少以管理域用户身份登录时才能工作。而不是在普通用户使用Outlook发送电子邮件的机器上。 –