.NET アプリケーションから電子メールを送信する最良の方法は?
質問
私は、発生する可能性のある (絶対に禁止されている) 例外をキャッチする例外ハンドラーが組み込まれた Windows フォーム (.NET 3.5) アプリケーションに取り組んでいます。例外ハンドラーでユーザーにクリックを促すことができるようにしたいと考えています。 エラーレポートを送信する ボタンをクリックすると、アプリが私の FogBugz メール アドレスにメールを送信します。
これを行うための最善の方法は何ですか? また、注意すべき「落とし穴」はありますか?
解決
概要を説明したように、SmtpClient クラスを使用するとよいでしょう。 ここ.
問題はありません。電子メールの送信は非常に簡単です。
他のヒント
クライアントの資格情報について心配する必要はなく、Esteban が提案したように SmtpClient を使用するだけです。ユーザーは構成時に有効な Smtp サーバーの URL を指定する必要がありますが、ほとんどの ISP は、ユーザーがその ISP の smptp サーバーの URL を入力する限り、ネットワーク上 (クライアントの 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 を使用することが答えになります。ただし、ユーザーのマシンでは、送信のために SMTP サーバーが必要になります。
ユーザーに SMTP 資格情報の入力を求めることもできますが、あなたのケースではそれは現実的ではないと思います。ユーザーとして、私は自分の SMTP 資格情報をランダムなアプリ (SPAM など) に提供したくありません。また、独自の SMTP 認証情報をアプリにハードコーディングすることも望ましくありません。悪意のあるユーザーがこれらの認証情報を盗聴し、サーバーを使用して SPAM を送信することは簡単です。
理想的には、ユーザーのメール エージェントを使用して電子メールを送信できるようになります。mailto を作成して実行できるかもしれないと考えていました。URL ですが、メッセージの本文や添付ファイルを指定できるかどうかはわかりません。
Fogbugz を使用しているとおっしゃっていました。
試す http://www.fogcreek.com/FogBugz/docs/60/topics/customers/BugzScout.html?isl=59722または http://www.fogcreek.com/FogBugz/blog/post/C-wrapper-for-the-FogBugz-API.aspx?isl=59722
FB のインストール ディレクトリにサンプル コードがいくつかあると思います。Michael Pryor に次の点について確認しました。ライセンスを確認したところ、彼らのコードを使用しても問題はありませんが、YMMV を使用するので、確認してみますとのことでした。
良い出発点となります。
サードパーティもチェックしてみてください aspネットメール このライブラリには、System.Net.Mail が提供するものを上回る多くの便利な機能が含まれています。
概要を説明したように、SmtpClient クラスを使用するとよいでしょう。 ここ。問題はありません。電子メールの送信は非常に簡単です。
広範囲にわたる System.Net.Mail に関するよくある質問 位置しています ここ.