VB2010でメールを送信

タグの編集
投稿者 富士山  (その他) 投稿日時 2012/11/23 21:46:12
とあるサイトに書いてあった メールを送るコードをVB2010で試したところ

sc.Send(msg)がハンドルされませんでした

使ってるPCはWindows XPです

どうすれば良いのか教えて下さい  

下がそのコードです

        'MailMessageの作成 
        Dim msg As New System.Net.Mail.MailMessage()
        '送信者 
        msg.From = New System.Net.Mail.MailAddress("xxxxxx@xxxx.xxxx")
        '宛先 
        msg.To.Add(New System.Net.Mail.MailAddress("xxxxxx@xxxx.xxxx"))
        'あて先をもう一人追加 
        msg.To.Add(New System.Net.Mail.MailAddress("xxxxxx@xxxx.xxxx"))
        'CC 
        msg.CC.Add(New System.Net.Mail.MailAddress("xxxxxx@xxxx.xxxx"))
        'BCC 
        msg.Bcc.Add(New System.Net.Mail.MailAddress("xxxxxx@xxxx.xxxx"))
        'ReplyTo 
        msg.ReplyTo = New System.Net.Mail.MailAddress("xxxxxx@xxxx.xxxx")
        'Sender 
        msg.Sender = New System.Net.Mail.MailAddress("xxxxxx@xxxx.xxxx")

        '件名 
        msg.Subject = "こんにちは"
        '本文 
        msg.Body = "こんにちは。" + vbCrLf + vbCrLf + "それではまた。"

        '優先順位を「重要」にする 
        msg.Priority = System.Net.Mail.MailPriority.High
        'メールの配達が遅れたとき、失敗したとき、正常に配達されたときに通知する 
        msg.DeliveryNotificationOptions = _
            System.Net.Mail.DeliveryNotificationOptions.Delay Or _
            System.Net.Mail.DeliveryNotificationOptions.OnFailure Or _
            System.Net.Mail.DeliveryNotificationOptions.OnSuccess


        Dim sc As New System.Net.Mail.SmtpClient()

        'SMTPサーバーを指定する 
        sc.Host = "localhost"
        'メッセージを送信する 
        sc.Send(msg)

        '後始末 
        msg.Dispose()





何度もVBの質問をしてすいません・・・
投稿者 (削除されました)  () 投稿日時 2012/11/24 02:11:07
(削除されました)
投稿者 ぽこた  (社会人) 投稿日時 2012/11/24 04:02:32
たぶんSMTPサーバを指定していないか、あるいはSMTPサーバに認証が必要かのどちらかでしょう。
下記プログラムのように、SendはTryの中に含めた方が、SMTPサーバに繋がらないときはエラーメッセージが出るので原因が把握しやすいと思います。


Imports System.Net.Mail

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
        ' SMTPサーバーを指定する 
        Dim client As New SmtpClient("pastelsoft.sakura.ne.jp")
        ' 送信元、あて先、件名、本文を設定する 
        Dim fromAddress As String = "pocota@pastelsoft.sakura.ne.jp"
        Dim toAddress As String = "hi@poc.jp"
        Dim subject As String = TextBox1.Text
        Dim body As String = TextBox2.Text
        Try
            ' 送信する 
            client.Send(fromAddress, toAddress, subject, body)
            MessageBox.Show("送信しました")
        Catch ex As SmtpException
            ' SMTPサーバーへの接続に失敗した場合 
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class
投稿者 富士山  (その他) 投稿日時 2012/11/24 14:57:20
ぽこたさんのコードを実行してみましたが

client.Send(fromAddress, toAddress, subject, body)

この部分が指定されて 

FormatExceptionはハンドルされませんでした

指定された文字列は、電子メール アドレスに必要な形式ではありません。

と エラーが出ます
投稿者 ぽこた  (社会人) 投稿日時 2012/11/24 18:19:11
正しくビルド出来ていません。
 
>Dim fromAddress As String = "pocota@pastelsoft.sakura.ne.jp"
>Dim toAddress As String = "hi@poc.jp"
 この右辺、正しいメールアドレスになっていますか?(上記は例なので架空のものです。)
投稿者 まだまだ  (高校生) 投稿日時 2012/11/25 03:26:48
Mailの送信はVBの知識だけでなくNetworkについての知識もいるのでなかなか厄介なところがあります。
まずはSMTPについての予備知識を習得するとよいと思います。
また、SMTP Serverを所有(または利用できる権限)していないと送信できません。
おそらく原因はSMTP Serverの指定にあると思います。

PHP等の知識がある場合はsendmail(結局はSMTP Serverは必要ですが)で送るほうが楽かもしれませんね。ちなみに僕はそうしています。
投稿者 ぽこた  (社会人) 投稿日時 2012/11/25 13:08:02
>指定された文字列は、電子メール アドレスに必要な形式ではありません。
というエラーが出た場合、単にメールアドレスが間違っているだけだと思いますよ。
たとえば「mail@domain.ne.jp」とすべきところを「mail.domain.ne.jp」となっているとか。
投稿者 富士山  (その他) 投稿日時 2012/11/25 15:09:29
まだまだ勉強不足なので 他の方法を探して そこから発展したいと思います
ありがとうございました
投稿者 富士山  (その他) 投稿日時 2012/11/25 15:09:32
まだまだ勉強不足なので 他の方法を探して そこから発展したいと思います
ありがとうございました
投稿者 ぽこた  (社会人) 投稿日時 2012/11/25 20:51:38
SMTPでビビっちゃったんでしょうか。ごめんなさい。
本当はそんなに難しくはないんですよ~。

1回うまくいけば、あとはもう自由自在ですから。
気が向いたら戻ってきてくださーい(;_;)/~
投稿者 富士山  () 投稿日時 2012/12/4 21:43:24
ぽこたさん ありがとうございます