2011-09-13 17 views
1

JCL(私は最新のMAPIコードを必ず使用しています)を使用しているときに、Delphiのユニコードでのみ問題が発生しています。Delphi unicode JCL MAPI Mozilla Thunderbirdの問題

私は、このコードは、Delphi 2007、同じJCL、サンダーバードが、例えば使用していない作品の一般的な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); 

を取得Delphi 2010.私はすでにJCL/MAPIの一般的な回避策を適用してみました。何か案は? :)

+1

'smpt:'は 'smtp:'にする必要があります – mjn

+1

どのMAPI操作が失敗するか、ResolveNameかSendか、その両方ですか? – mjn

+0

ResolveName(即時)とSend(かなりの数秒後)でもエラーが発生します... "smpt"キャッチをありがとう! (私が試していたいくつかの新しいコードでした)私はただ修正してテストしましたが、どちらの方法もまだエラーです! – Tom

答えて

2

私は同じ問題がありました。私の場合、メールクライアントがデフォルトのWindowsユーザーコンテキストで実行されている間、アプリケーションは管理者権限で実行されていました。

たぶんこの記事は助けることができる: JclMapi mapi general failure

は、最後の回答を参照してください。引用:

私はMAPIクライアントがMAPIサーバー(電子メールクライアント - 私の場合はThunderbird)と同じユーザーコンテキストで実行する必要があることがわかりました。

しかし、管理者権限で起動したアプリケーション(デバッガで実行中のアプリなど)から呼び出した場合、MAPI呼び出しはエラーコード2で失敗します。呼び出し元とメールクライアントの両方が管理者として実行されている場合、最近誰かが管理者として電子メールクライアントを実行するのに狂っているのだろうか?)。