2011-09-13 80 views
1

我有一個問題,只有在使用JCL(我確定使用最新的)MAPI代碼時才發生在Delphi unicode上。Delphi unicode JCL MAPI Mozilla Thunderbird問題

我得到的總MAPI失敗

TmpEmail := TjclEmail.Create; 

    TmpResolve := False; 
    try 
    TmpResolve := TmpEmail.ResolveName(TmpStr_Name, TmpStr_Email, True); 
    except 
    // new code for Delphi unicode... Also gives mapi failure 
    end; 
    if TmpResolve then 
    TmpEmail.Recipients.Add(TmpStr_Email) 
    else 
    TmpEmail.Recipients.Add('smtp:' + TmpStr_Email) 
    ; 
    TmpEmail.Recipients[0].Name := TmpEmail.Recipients[0].Address; 

    TmpEmail.Subject := 'bla bla'; 
    TmpEmail.Send(True); 

此代碼德爾福2007年,同樣的JCL,雷鳥,但使用例如,當不德爾福2010年。我已經嘗試應用我的一般JCL/MAPI解決方法。有任何想法嗎? :)

+1

我認爲'smpt:'應該是'smtp:' – mjn

+1

哪些MAPI操作失敗,ResolveName或Send或兩者兼而有之? – mjn

+0

ResolveName(立即)和發送(在幾秒鐘後)給出錯誤...感謝「smpt」catch! (是我嘗試的一些新代碼)我只是修復並測試它,但這兩種方法仍然錯誤! – Tom

回答

2

我有同樣的問題。在我的情況下,當郵件客戶端在默認的windows用戶上下文下運行時,應用程序以管理員權限運行。

也許這篇文章可以幫助: JclMapi mapi general failure

看到最後的回答。 Quote:

掙扎與同樣的問題後,我發現MAPI客戶端必須在MAPI服務器(電子郵件客戶端 - 在我的情況下,雷鳥)相同的用戶上下文中運行。但是,如果從以管理員權限啓動的應用程序(例如調試程序中運行的應用程序)調用,則MAPI調用將失敗,並顯示錯誤代碼2.如果調用者和電子郵件客戶端都以admin身份運行,則一切正常(但是這些日子誰瘋狂到足以運行電子郵件客戶端?)。