発生する可能性のある(天国で禁止されている)例外をキャッチするための組み込みの例外ハンドラーを備えたWindowsフォーム(.NET 3.5)アプリケーションに取り組んでいます。例外ハンドラーでユーザーにボタンをクリックするように促すことができるようにしたいと思いSend Error Reportます。これにより、アプリはFogBugzのメールアドレスにメールを送信します。
これを行うための最良の方法は何ですか、そして注意すべき「落とし穴」はありますか?
クライアントの資格情報について心配する必要はなく、Esteban の提案に従って SmtpClient を使用するだけです。構成時にユーザーが有効な SMTP サーバーの URL を提供する必要がありますが、ほとんどの ISP は、ネットワーク (クライアントの 1 つ) にいる場合、匿名の smtp を許可します。人々は何の問題もないでしょう。
注: .config ファイルには、SmtpClient オブジェクトの構成オプションを格納するための定義済みセクションがあります。そこに設定を入れると、メールを送信するときにコードに明示的に何も設定する必要はありません。セクションの例を以下に示します。
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="stuff@somewhere.com.au">
<network host="smtp.somewhere.com.au" />
</smtp>
</mailSettings>
</system.net>
ユーザー名とパスワードはオプションです。Intellisense は、構成ファイルのこれらの部分に対して機能します。
編集:私のコード例を少し修正。
ここで概説するように、SmtpClientクラスを使用することをお勧めします。
落とし穴はありません-メールの送信は簡単です。
Fogbugz を使用しているとのことでした。
http://www.fogcreek.com/FogBugz/docs/60/topics/customers/BugzScout.html?isl=59722 またはhttp://www.fogcreek.com/FogBugz/blog/post/C-wrapper-forを試してください-FogBugz-API.aspx?isl=59722
いくつかのサンプル コードがあります。FB インストール ディレクトリにあると思います。Michael Pryor re: Licensing に確認したところ、YMMV のコードを使用しても問題ないとのことでしたので確認します。
それは良い出発点を提供します。
制御された環境では、 SmtpClient を使用することが答えになります。しかし、ユーザーのマシンでは、送信するために SMTP サーバーが必要になります。
ユーザーに SMTP 資格情報を要求することもできますが、それはあなたの場合には実用的ではないと思います。ユーザーとして、自分の SMTP 資格情報をランダムなアプリに提供したくありません (スパムを考えてください)。また、独自の SMTP 資格情報をアプリにハードコードすることも望ましくありません。悪意のあるユーザーがそれらの資格情報を傍受し、サーバーを使用してスパムを送信するのは簡単なことです。
ユーザーのメール エージェントを使用して電子メールを送信できることが理想的です。mailto: URL を作成して実行できるのではないかと考えていましたが、メッセージの本文や添付ファイルを指定できるかどうかはわかりません。
また、サードパーティのaspNetEmailライブラリもチェックしてみてください。これには、System.Net.Mail が提供する以上の便利な機能がたくさんあります。
hereで説明されているように、SmtpClient クラスを使用する必要があります。問題はありません。電子メールの送信は簡単です。
詳細なSystem.Net.Mail FAQは、ここにあります。