電子書籍の厳選無料作品が豊富!

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) ←エラー箇所
==================
似たプログラムを書いたことのある方、何か情報をお持ちの方、よろしければアドバイスを頂きたく思います。よろしくお願いします。

A 回答 (3件)

telnet.exeや有名メーラで接続できないのであれば、環境の問題でしょう。


プログラミングの問題ではありません。
ちなみにこちらからは、pop.mail.yahoo.co.jpの110は繋がります。

ポート110がfirewallで遮断されているとかでは?
    • good
    • 0
この回答へのお礼

>ポート110がfirewallで遮断されているとか
Windowsファイヤウォールを有効にしていますので、そのような気がしてきました。
ファイヤウォールは切ってしまうわけにはいきませんね…

プログラムのせいではないことが判り、ちょっとすっきりしました。
別のWebアプリケーションにトライしようと思います。

どうもありがとうございました!!

お礼日時:2004/12/21 13:17

>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"
としています。綴りも確認済です。

補足日時:2004/12/21 09:26
    • good
    • 0

エラーメッセージはそのまんまの意味かと思いますが。

先にPOPでアクセスすればいいでしょう。
エラー落ちを防ぎたいのならTryでくくればいいだけですが。

あとメールサーバー側の設定次第ではそれでもまともに動かないケースも多々あります。
以下2chからのコピペですが(ログ落ちしてるので見れません)
---
そういう場合は例えば foo@bar.com に送るとして、nslookup -type=MX bar.com で得られる
mail exchanger を SmtpServer にセットして、直接先方へ送れば多くのケースで動くと思います。
nslookup は System.Diagnostics.Process.Startで起動して、標準出力を貰えばよいでしょう。

この回答への補足

>先にPOPでアクセスすればいいでしょう。
アクセスする前に失敗しているのだと思っていたのですが…
>以下2chからのコピペですが
こちらの方法についても調べてみたいと思います。

ありがとうございます。

補足日時:2004/12/21 09:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!