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
「うまく動作しない」では
・どのような動作を期待したのか
・どのような動作をしたのか
が一切わかりません。
上記2点を記述してください。
# まさか,"abcd.xxx.co.jp"をそのまま使っていないですよね……。
返答ありがとうございます。
・どのような動作を期待したのか
指定したアドレスにメールを送信する動作です。
・どのような動作をしたのか
送信がエラーとなりました。そのときの例外の詳細は、以下の通りです。
System.Net.Mail.SmtpException がキャッチされました
Message="メールを送信できませんでした。"
Source="System"
StackTrace:
場所 System.Net.Mail.SmtpClient.Send(MailMessage message)
あとアドレスは自分のPCのアドレスを使っています。
> あとアドレスは自分のPCのアドレスを使っています。
そのPCでは有効なSMTPサービスが走っていますか?
手元では,
・localhost指定 (SMTPサービス無し)
SmtpException (InnerException : WebException [接続拒否]
・プロバイダメールサーバー指定
正常送信
となりました。
まずはMSDNを見て確認する癖を付けると良いかと。
有効なSMTPサービスかどうかをどこで判断するかわかりませんが、
メールは普通に使用できています。が、やはりプロバイダかメール
の設定に問題がありそうですね。
> 有効なSMTPサービスかどうかをどこで判断するかわかりませんが、
> メールは普通に使用できています。
メールが受信できてるだけとか。
メールソフトで送信用メールサーバーの指定ってしてるでしょ?
それを指定してみた?
>ばふさん
返答ありがとうございます。
メールは送信受信共に問題なく使用できています。
送信用メールサーバーの指定とは、OutlookExpressでいうと、アカウントの
メール-プロパティのサーバータブの(POP3)と(SMTP)の箇所で設定する
ところだと思うのですが、設定は問題ないと思います。が、指定するというのがよくわからないのですが、別に設定する項目があるということなんでしょうか?
貴殿のメール環境がわかりませんので、
とりあえず、推測される原因を挙げておきます。
・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
・その他
>もげさん
返答ありがとうございます。
セキュリティソフトを無効にすると正常にメールを送信することが
できました。
調べてみたところポートブロックの項目に「大量メール配信型ワームに
メールを送信させない」(ポート25)というのがあり、そのチェックを
はずすと正常に送信できました。
会社のPCなので、セキュリティ関連を無効にするのはまずいので、
違う方法でメールを送信してみようと思います。
色々お教え頂いて有難う御座いました。
解決しました
ツイート | ![]() |