2017-06-15 62 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發送電子郵件的機器上。 –