Windows 7環境におけるSMTPメールアプリケーションの開発について
投稿者 shu  (社会人)
投稿日時
2011/2/3 13:04:20
System.Net.Mail.SmtpClient
ですか?
hostを指定すれば自分のとこにsmtpがなくても送れますよ。
ですか?
hostを指定すれば自分のとこにsmtpがなくても送れますよ。
投稿者 パールマン  (社会人)
投稿日時
2011/2/3 18:11:14
お世話になっております。
仰るとおり、System.Net.Mail.SmtpClient なのですけど・・・・
当初試したプログラムコードは、どぼんさんのサイトで紹介されているもので、コードは次の様に
なります。
上記のコードは、どぼんさんのサイトで紹介されているコードそのものですが、
試したコードでは、送受信のアドレスとsc.hostの内容を私の指定するものに替えております。
shuさんが仰る‘host’は、上記コードのsc.hostの内容と解釈しているのですが、このあたりで
何か間違っているのでしょうか。
そして、これを実行すると次のエラーメッセージが表示されます。
-------------------------------------------------------------------
× アプリケーションのコンポーネントで、ハンドルされていない例外が発生しまし
た。[続行]をクリックすると、アプリケーションはこのエラーを無視し、続行しよう
とします。[終了]をクリックすると、アプリケーションは直ちに終了します。
メールを送信できませんでした。
[ ▼ 詳細 ] [ 続行 ] [ 終了 ]
-------------------------------------------------------------------
1つ気になっているのは、SMTPサーバがOP25Bを実施しているためかなと考えているのですが、
これだとしますと、対応方法がわからないという状態です。
仰るとおり、System.Net.Mail.SmtpClient なのですけど・・・・
当初試したプログラムコードは、どぼんさんのサイトで紹介されているもので、コードは次の様に
なります。
'送信者
Dim senderMail As String = "sender@xxx.xxx"
'宛先
Dim recipientMail As String = "recipient@xxx.xxx"
'件名
Dim subject As String = "こんにちは"
'本文
Dim body As String = "こんにちは。" + vbCrLf + vbCrLf + "それではまた。"
Dim sc As New System.Net.Mail.SmtpClient()
'SMTPサーバーを指定する
sc.Host = "localhost"
'メールを送信する
sc.Send(senderMail, recipientMail, subject, body)
上記のコードは、どぼんさんのサイトで紹介されているコードそのものですが、
試したコードでは、送受信のアドレスとsc.hostの内容を私の指定するものに替えております。
shuさんが仰る‘host’は、上記コードのsc.hostの内容と解釈しているのですが、このあたりで
何か間違っているのでしょうか。
そして、これを実行すると次のエラーメッセージが表示されます。
-------------------------------------------------------------------
× アプリケーションのコンポーネントで、ハンドルされていない例外が発生しまし
た。[続行]をクリックすると、アプリケーションはこのエラーを無視し、続行しよう
とします。[終了]をクリックすると、アプリケーションは直ちに終了します。
メールを送信できませんでした。
[ ▼ 詳細 ] [ 続行 ] [ 終了 ]
-------------------------------------------------------------------
1つ気になっているのは、SMTPサーバがOP25Bを実施しているためかなと考えているのですが、
これだとしますと、対応方法がわからないという状態です。
投稿者 shu  (社会人)
投稿日時
2011/2/3 21:25:30
そうするとポート指定とかsmtp認証とか必要になりそうな感じですかね。
portとかCredentials 辺りの設定をしてみてはどうでしょう?
portとかCredentials 辺りの設定をしてみてはどうでしょう?
投稿者 パールマン  (社会人)
投稿日時
2011/2/5 09:10:01
shuさん、ありがとうございました。
ご教示のとおり、port(ポート), Credentials(認証情報)の設定が必要でした。
さらにメール送信プログラムコードの完成には、EnableSsl(通信の暗号化指定)が必要であることがわかりました。
プログラムコードは次の様になりました
※ sender, recipient, host ,userID, pass は、読み替えてください。
ご教示のとおり、port(ポート), Credentials(認証情報)の設定が必要でした。
さらにメール送信プログラムコードの完成には、EnableSsl(通信の暗号化指定)が必要であることがわかりました。
プログラムコードは次の様になりました
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 送信者
Dim senderMail As String = "sender"
' 宛先
Dim recipientMail As String = "recipient"
'件名
Dim subject As String = "こんにちは"
'本文
Dim body As String = "こんにちは。" + vbCrLf + vbCrLf + "それではまた。"
Dim sc As New System.Net.Mail.SmtpClient()
'SMTPサーバーを指定する
sc.Host = "host"
' ポートを指定する
sc.Port = "587" ' OP25Bが実施されている場合
'認証情報を指定する ' 必要な場合は指定する
sc.Credentials = New System.Net.NetworkCredential("userID", "pass")
'SSLの指定
sc.EnableSsl = False
'メールを送信する
sc.Send(senderMail, recipientMail, subject, body)
End Sub
※ sender, recipient, host ,userID, pass は、読み替えてください。
簡単なメールを送信する、ただそれだけの機能のアプリケーションを作っていたのですが、Windows 7に付属( と言ったらいいのかな )しているIIS 7にはSMTPが無い?という問題にぶつかりました。
Visualbasic 2010のSampleにメールを送信するサンプルプログラムがあるのですが、「IISを使えるようにして・・・」と注意書きがあるものの一番肝心なSMTPが無い?ために実行を試してもメールは送信できないというエラーが発生するばかりでした。
Microsoft TechNetにある「SMTP 電子メールを構成する」を参照したところ、
------------------ 引用 ----------------------
既定では、SMTP サーバーはインストールされません。
SMTP は、Windows Server® 2008 のサーバー マネージャー ツールの
[機能の概要] を使用して追加できます。
---------------------------------------------
と「メモ」にありました。
http://technet.microsoft.com/ja-jp/library/cc772058%28WS.10%29.aspx
つまりこれは「Windows Server® 2008 のサーバー マネージャー ツール」を利用しろということでしょうか。
この「Windows Server® 2008 のサーバー マネージャー ツール」は、どこからかダウンロードして
使用できるものなのでしょうか。
まさかWindows Server 2008を買えということではないですよね。(汗;)