[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
質問
を使用しています。
SmtpClient
ライブラリを使用して、以下のようにメールを送信しています。
SmtpClient client = new SmtpClient();
client.Host = "hostname";
client.Port = 465;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.EnableSsl = true;
client.Credentials = new NetworkCredential("User", "Pass);
client.Send("from@hostname", "to@hostname", "Subject", "Body");
このコードはテスト環境では問題なく動作しますが、本番用のSMTPサーバーを使用する場合は
SmtpException
"Failure sending mail." と表示され、内側に
IOException
"Unable to read data from the transport connection: net_io_connectionclosed" トランスポートコネクションからデータを読み込むことができません。
ファイアウォールが問題でないことを確認しました。クライアントとサーバーの間では、ポートは問題なく開いています。他にこのようなエラーが発生する原因がわかりません。
解決方法は?
EDIT: スーパーリデュース版
465の代わりに587番ポートを試してみてください。ポート465は技術的に非推奨です。
パケットを何度もスニッフィングしているうちに、それがわかってきた。まず、これが簡単な答えです。
.NET の
{{コード
のみ
はSTARTTLSによる暗号化に対応しています。もし
SmtpClient
EnableSsl
その昔、サービスが暗号化も提供しようとすると、別のポート番号が割り当てられ、そのポート番号ですぐにSSL接続が開始されました。時間が経つにつれて、1つのサービスのために2つのポート番号を無駄にするのは馬鹿げていると考え、STARTTLSを使って同じポートで平文と暗号化を可能にする方法を考案したのです。通信は平文で始まり、その後STARTTLSコマンドを使って暗号化された接続にアップグレードします。STARTTLSはSMTP暗号化の標準となった。残念ながら、新しい標準が実装されたときにいつも起こることですが、世の中のすべてのクライアントとサーバーとの互換性にごたごたがあります。
私の場合、ユーザーがソフトをサーバーに接続しようとして、即座にSSL接続を強制していました。これは、マイクロソフトが.NETでサポートしていないレガシーな方法です。
関連
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] エラー - IISメタベースにアクセスできません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み】WebResource.axdとは何ですか?