- ベストアンサー
POP before SMTPのメール
ASP.NETでメールの送信を行うWebアプリケーションを試作しております。 POP before SMTPのPOPサーバ認証に失敗しています。 [環境] OS WindowsXP Pro サーバ IIS [ボタン押下時] ================== '接続 Dim pop As TcpClient = New TcpClient(Server, 110) Try Dim NwStm As NetworkStream = pop.GetStream() Dim rdStm As StreamReader = New StreamReader(NwStm, System.Text.Encoding.ASCII) Dim wrStm As StreamWriter = New StreamWriter(NwStm, System.Text.Encoding.ASCII) Try '接続メッセージ確認 res = rdStm.ReadLine() 'ユーザー情報送出 message = "USER " + UserId wrStm.WriteLine(message) wrStm.Flush() 'レスポンス取得 res = rdStm.ReadLine() 'パスワード送出 message = "PASS " + Passwd wrStm.WriteLine(message) wrStm.Flush() res = rdStm.ReadLine() '接続終了 wrStm.WriteLine("QUIT") wrStm.Flush() Finally NwStm.Close() End Try Finally pop.Close() End Try 'ここからメール送信 ・ ・ ・ ================== ビルドの際エラーは出ず、ボタンクリック時に、以下のエラーが出ます。 ================== 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。 または接続済みのホストが応答しなかったため、確立された接続は失敗しました。 Dim pop As TcpClient = New TcpClient(Server, 110) ←エラー箇所 ================== 似たプログラムを書いたことのある方、何か情報をお持ちの方、よろしければアドバイスを頂きたく思います。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
telnet.exeや有名メーラで接続できないのであれば、環境の問題でしょう。 プログラミングの問題ではありません。 ちなみにこちらからは、pop.mail.yahoo.co.jpの110は繋がります。 ポート110がfirewallで遮断されているとかでは?
その他の回答 (2)
- todo36
- ベストアンサー率58% (728/1234)
>Dim pop As TcpClient = New TcpClient(Server, 110) ←エラー箇所 POP認証以前にTCP接続で失敗しています。 Serverが間違っていると思われます。 まずは、telnetで確認した方が分かりやすい。
補足
ご回答ありがとうございます。 >まずは、telnetで確認した方が分かりやすい コマンドプロンプトで telnet open サーバ名 ポート番号 という操作のことでよろしいでしょうか。 やはり「ホストへ接続できませんでした」と返ってきます。 (質問が長くなり「telnet接続もできませんでした」という文を削っていました) yahooのフリーメールを使っていますので、 Dim Server As Strings = "pop.mail.yahoo.co.jp" としています。綴りも確認済です。
- popesyu
- ベストアンサー率36% (1782/4883)
エラーメッセージはそのまんまの意味かと思いますが。先にPOPでアクセスすればいいでしょう。 エラー落ちを防ぎたいのならTryでくくればいいだけですが。 あとメールサーバー側の設定次第ではそれでもまともに動かないケースも多々あります。 以下2chからのコピペですが(ログ落ちしてるので見れません) --- そういう場合は例えば foo@bar.com に送るとして、nslookup -type=MX bar.com で得られる mail exchanger を SmtpServer にセットして、直接先方へ送れば多くのケースで動くと思います。 nslookup は System.Diagnostics.Process.Startで起動して、標準出力を貰えばよいでしょう。
補足
>先にPOPでアクセスすればいいでしょう。 アクセスする前に失敗しているのだと思っていたのですが… >以下2chからのコピペですが こちらの方法についても調べてみたいと思います。 ありがとうございます。
お礼
>ポート110がfirewallで遮断されているとか Windowsファイヤウォールを有効にしていますので、そのような気がしてきました。 ファイヤウォールは切ってしまうわけにはいきませんね… プログラムのせいではないことが判り、ちょっとすっきりしました。 別のWebアプリケーションにトライしようと思います。 どうもありがとうございました!!