6

2008 年、Jeff は責任を持ってクラッシュするという記事を書きました。その精神で、クラッシュエラーダイアログに「バグレポートを送信」ボタンを追加しようとしています。これは、バージョン情報、OS 情報、スタック トレースを含む完全なバグ レポートをユーザーが簡単に送信できるようにするためです。この情報は、メッセージ本文または添付ファイルに含める必要があります。

残念ながら、.NET アプリケーションからこのようなメールを送信するのは簡単ではないようです。

  • System.Net.Mailは私が探しているものではありません: SMTP サーバーへの接続がすべての環境で確立できるかどうか確信が持てず、ローカルの SMTP ホスト名を構成する負担をかけたくありません。ユーザーのポート。代わりに、事前に構成されたメッセージを使用して、システム上の既存の電子メール ソフトウェアを起動したいだけです。
  • OS を使用して "mailto:" URL を開くことはできますが、この方法で渡すことができるデータの量には厄介な制限があります。また、添付ファイルは実際にはmailto 仕様でサポートされていないようです。
  • mapi.dllは、このコードプロジェクトの記事で示されているように、おそらく私が望むことを実行しますが、 mapi.dll は基本的に .NET と互換性がなく、ランダムなクラッシュを引き起こすことを他の場所で読みました。

これを行うための安全で信頼できる解決策を見つけた人はいますか?

4

3 に答える 3

3

これを解決するために、スタックトレース、圧縮されたログなどを取得する単純なWCF Webサービスを作成し、クライアントがそれに投稿して、Webサービスサーバーに電子メールを送信させます。このように、クライアント側でSMTP認証情報を持っている必要はありません。また、電子メールクライアントを介してエラーレポートを送信するためにユーザーに依存する必要もありません。

現在、このWebサービスを介してクライアント側のログを定期的に圧縮してバックエンドサーバーに送信し、それらのログを分析して、クライアントに問題が発生する前にクライアント側の問題を事前に検出しています。

于 2010-12-21T14:13:07.010 に答える
2

手っ取り早い方法は、PHPfeを介して情報を受信するようにサーバーを設定することです。を作成ErrorReport.phpし、base64パッケージにラップしたすべての情報を使用して呼び出してみてください。

この「のみ」には、ポート80でのインターネットアクセスが必要です。これはおそらく利用可能です。そこから、情報を処理してデータベースfeに渡すことができます。

于 2010-12-21T14:13:23.650 に答える
0

独自の互換性のあるサーバーを使用する場合は、「telnet」のようなソケット構造を作成して、データをサーバーに直接投稿することができます。

このようなもの: http://www.csharphelp.com/2007/07/sending-email-with-c-using-smtp/

于 2010-12-21T14:07:03.440 に答える