1

JCL を使用している場合に Delphi Unicode でのみ発生する問題があります (最新の MAPI コードを使用するようにしました)。

一般的な 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 2007、同じ JCL、Thunderbird で動作しますが、Delphi 2010 などを使用する場合は動作しません。一般的な JCL/MAPI の回避策を適用しようとしました。何か案は?:)

4

1 に答える 1

3

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

たぶん、この投稿が役立つかもしれません: JclMapi mapi general failure

最後の回答を参照してください。見積もり:

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

ただし、アプリからの呼び出しが管理者権限で開始された場合 (たとえば、デバッガーで実行されているアプリ)、MAPI 呼び出しはエラー コード 2 で失敗します。発信者と電子メール クライアントの両方が管理者として実行されている場合、すべてが機能します (しかし、誰が十分にクレイジーなのか)。最近、電子メール クライアントを管理者として実行するには?)。

于 2015-02-04T11:18:14.283 に答える