VB 2005でメールを送信するには

解決


TAKU  2007-12-14 20:37:31  No: 138410

VB2005でメールを送信するプログラムを作ろうとしています。
ネットで以下のコードを見つけて実行してみたのですが、うまく動作しませんでした。
間違えている箇所をご教示いただきたくお願い致します。

参考ページ  :  http://www.microsoft.com/japan/msdn/vbasic/migration/tips/netmail/

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim message As New System.Net.Mail.MailMessage(txtForm.Text, txtTo.Text)
message.Subject = Me.txtSubject.Text
message.Body = Me.txtBody.Text
Dim client As New System.Net.Mail.SmtpClient("abcd.xxx.co.jp")
client.Send(message)

txtForm.Clear()
txtTo.Clear()
txtSubject.Clear()
txtBody.Clear()

MessageBox.Show("メールを送信しました。", "送信終了")
Catch ex As Exception
MessageBox.Show("送信できませんでした。", "エラー")
End Try
End Sub


YuO  2007-12-14 23:24:54  No: 138411

「うまく動作しない」では
・どのような動作を期待したのか
・どのような動作をしたのか
が一切わかりません。
上記2点を記述してください。
# まさか,"abcd.xxx.co.jp"をそのまま使っていないですよね……。


TAKU  2007-12-14 23:29:53  No: 138412

返答ありがとうございます。

・どのような動作を期待したのか
指定したアドレスにメールを送信する動作です。

・どのような動作をしたのか
送信がエラーとなりました。そのときの例外の詳細は、以下の通りです。
System.Net.Mail.SmtpException がキャッチされました
  Message="メールを送信できませんでした。"
  Source="System"
  StackTrace:
       場所 System.Net.Mail.SmtpClient.Send(MailMessage message)

あとアドレスは自分のPCのアドレスを使っています。


YuO  2007-12-15 00:51:30  No: 138413

> あとアドレスは自分のPCのアドレスを使っています。
そのPCでは有効なSMTPサービスが走っていますか?
手元では,
・localhost指定 (SMTPサービス無し)
SmtpException (InnerException : WebException [接続拒否]
・プロバイダメールサーバー指定
正常送信
となりました。

まずはMSDNを見て確認する癖を付けると良いかと。


TAKU  2007-12-15 02:16:28  No: 138414

有効なSMTPサービスかどうかをどこで判断するかわかりませんが、
メールは普通に使用できています。が、やはりプロバイダかメール
の設定に問題がありそうですね。


ばふ  2007-12-15 03:50:48  No: 138415

> 有効なSMTPサービスかどうかをどこで判断するかわかりませんが、
> メールは普通に使用できています。

メールが受信できてるだけとか。

メールソフトで送信用メールサーバーの指定ってしてるでしょ?
それを指定してみた?


TAKU  2007-12-17 19:53:22  No: 138416

>ばふさん
返答ありがとうございます。
メールは送信受信共に問題なく使用できています。
送信用メールサーバーの指定とは、OutlookExpressでいうと、アカウントの
メール-プロパティのサーバータブの(POP3)と(SMTP)の箇所で設定する
ところだと思うのですが、設定は問題ないと思います。が、指定するというのがよくわからないのですが、別に設定する項目があるということなんでしょうか?


もげ  2007-12-17 21:59:28  No: 138417

貴殿のメール環境がわかりませんので、
とりあえず、推測される原因を挙げておきます。

・SMTPサーバ名の指定を間違えている(諸氏指摘済み)
→正しいSMTPサーバを指定

・SMTP認証が必要なケース
→System.Net.NetworkCredential(Timeout指定が必要な場合もあり)
http://dobon.net/vb/dotnet/internet/smtpauth.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35369&forum=7&1

・Outbound port 25 Blocking
→ポート変更
http://dobon.net/vb/dotnet/internet/smtpport.html

・POP before SMTP
→POP受信してからSMTP送信

・ファイアーウォールがある
(×Windowsファイアウォール)
(×その他セキュリティ関連ソフト)
(×社内イントラ環境で、社外へのSMTPが禁止されている)
→ファイアウォール停止もしくは通過設定

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1757093&SiteID=7

・その他


TAKU  2007-12-17 22:30:28  No: 138418

>もげさん
返答ありがとうございます。
セキュリティソフトを無効にすると正常にメールを送信することが
できました。
調べてみたところポートブロックの項目に「大量メール配信型ワームに
メールを送信させない」(ポート25)というのがあり、そのチェックを
はずすと正常に送信できました。
会社のPCなので、セキュリティ関連を無効にするのはまずいので、
違う方法でメールを送信してみようと思います。
色々お教え頂いて有難う御座いました。


TAKU  2007-12-18 20:56:54  No: 138419

解決しました


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




  


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