メールの送信するには


まつ  2005-11-02 06:44:13  No: 92386

こんばんわ、まつです。

OS:Windows2000
VB.Net 2003 Framework1.1

以下のプログラム作成し、実行しました。
成功のメッセージは出るのですが、
メールが送られません。

    Private Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim userName As String = "hoge"
        Dim password As String = "hogehoge"
        Dim tcp As New Sockets.TcpClient

        tcp.Connect("localhost", 25)

        Dim sw As New StreamWriter(tcp.GetStream())
        sw.WriteLine("USER " & userName & "\nPASS " & password & "\nQUIT\n")
        sw.Flush()
        tcp.Close()

        Dim message As New System.Web.Mail.MailMessage
        message.From = "11111@xxx.ne.jp"
        message.To = "22222@yyy.com"
        message.Subject = "プログラムから送信する電子メール"

        message.Body = "テスト!"

        Try
            System.Web.Mail.SmtpMail.Send(message)
            MessageBox.Show("メールを送信しました", _
                "メール送信", _
                MessageBoxButtons.OK, _
                MessageBoxIcon.Information)
        Catch ex As Exception
            MessageBox.Show("メールの送信に失敗しました", _
                "メール送信", _
                MessageBoxButtons.OK, _
                MessageBoxIcon.Error)
        End Try

    End Sub

間違いがあれば、教えて頂けないでしょうか?
よろしくお願いします。


Geo=TK3  2005-11-02 18:39:42  No: 92387

.NET Framework 使ってないので推測ですが。

>Try
>    System.Web.Mail.SmtpMail.Send(message)
>    MessageBox.Show("メールを送信しました", _

これでは実際に使用する SMTP サーバが設定されてないように思います。
実際にメールの送信に使用する SMTP サーバ名を設定すればご希望の動作を
するようになるのでは?

ところでコード前半に tcp オブジェクトで localhost:25 に connect 〜 close している
部分がありますが、もしかして POP before SMTP を実装していますか?
それであれば、接続先ポート番号違うんじゃないかと。


まつ  2005-11-03 06:56:24  No: 92388

Geo=TK3さん、ありがとうございます。

tcp.Connect("localhost", 25)を
tcp.Connect("SMTP サーバ名", 25)にし、

sw.Flush()をコメントアウトしたら、送信されました。

その前にIISのSMPT Serviceをオフにしたのですが、何か関係があるのでしょうか?


Geo=TK3  2005-11-04 22:19:08  No: 92389

>tcp.Connect("localhost", 25)を
>tcp.Connect("SMTP サーバ名", 25)にし、
>sw.Flush()をコメントアウトしたら、送信されました。

あれ、なんか私の推測とは違う動作をしていますね (^^;; 。
sw.Flush() をコメントアウトしたら動作したのは、SMTP セッションに QUIT コマンドを送らなくなった為だと思うんですが。
# ちなみに SMTP には USER, PASS というコマンドはありません。
# SMTP-AUTH だとちょっと分からないですが。

うーん、System.Web.Mail.SmtpMail.Send メソッドって SmtpServer プロパティが設定されてない時には既に接続されている SMTP セッションを使うのかな?
msdn 読んでもいまいち動作が分からない...

>その前にIISのSMPT Serviceをオフにしたのですが、何か関係があるのでしょうか?

直接は関係ないと思います。
SMTP サーバとして"localhost"を使っていた時にはこのサービスが使われていたでしょうけれど、SMTP サーバ名に変更したという事なので。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加