1

この議論と、CrashRpt を使用してクラッシュ ダンプを生成し、それを開発者に電子メールで送信する方法についてのこの議論読んだ後、ライブラリが電子メールを送信するために使用する電子メール設定を構成するための指示/チュートリアルを見つけるのに苦労しました。

install() 関数を呼び出して CrashRpt を初期化するときに、クラッシュ ダンプの送信先の電子メール アドレスを指定しますが、CrashPrt ライブラリはそのアドレスに電子メールを送信する方法をどのように知っているのでしょうか? 図書館は、個々のユーザーの電子メール クライアントの設定を知る必要はありませんか?

コードで致命的なクラッシュが発生すると、CrashRpt ダイアログ ボックスが表示され、電子メール アドレスを入力して [送信] ボタンをクリックすると、[ファイルを保存] ダイアログ ボックスが表示され、圧縮されたパッケージと指定したアカウントを保存できます。 Install() 関数では、電子メールを受信しません。

事前にすべての助けに感謝します! 私は明らかに何かが欠けています。

4

2 に答える 2

2

メール送信のために CrashRpt が行うこと:

電子メール システムは、単に MAPI を使用して電子メールを送信します。デフォルトのメールクライアントがあり、MAPI をサポートしている場合は、それを使用しようとします。詳細については、MailMsg.cpp を参照してください。

個人的体験:

私の会社での CrashRpt の使用法では、クラッシュ レポートを送信する作成した Web サービスを呼び出すように少し変更しました。そこで、CrashRpt から電子メール コードを完全に削除しました。代わりに、バグ追跡システムに、クラッシュが発生したときに自動送信されたクラッシュのセクションがあります。

問題を見つけるには:

CrashRpt コードをデバッグして、保存ダイアログが表示される理由を確認してみてください。代わりに、デフォルトのメール クライアントを開くだけです。古いバージョンのライブラリを使用しているか、ダイアログ リソースが少し混乱している可能性があります。ただし、コードをデバッグすると、これがわかります。

ほとんどの場合、MailReport が呼び出されていますが、失敗しています。

元のCrashRpt コードの CrashHandler.cpp の DoModal の直後にブレークポイントを設定します。

 mainDlg.m_pUDFiles = &m_files;
   if (IDOK == mainDlg.DoModal())
   {
      //Put breakpoint here <---------
      if (m_sTo.IsEmpty() || 
          !MailReport(rpt, sTempFileName, mainDlg.m_sEmail, mainDlg.m_sDescription))
      {
         SaveReport(rpt, sTempFileName);
      }
   }

MailReport が呼び出されない理由を確認してください。ダイアログ リソースであるか、m_sTo が満たされていないか、MailMsg.cpp をステップ実行して MAPI が失敗している場所を確認できます。

代替ソリューション:

上記で MailReport が呼び出されているが成功していないことがわかった場合の簡単な修正は、代わりに ShellExecute を実行して mailto を指定することです。

MAPI メソッドを使用することもできますが、それが失敗した場合は、mailto:

于 2008-10-20T03:44:27.527 に答える
1

CrashRpt のドキュメント、FAQ を見つけて、新しい CrashRpt v1.1 をダウンロードできますhttp://code.google.com/p/crashrpt/

于 2009-08-07T05:51:02.903 に答える