System.Net.Mail.SmtpClient について
投稿者 刈谷勇  (社会人)
投稿日時
2009/8/9 03:05:31
覇王さん、こんにちは。
設定ファイルに設定させればいいと思います。
ここの初級講座「第37回 Myの用法」に詳しい使い方があります。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard37.htm
参照してみてください。
設定ファイルに設定させればいいと思います。
ここの初級講座「第37回 Myの用法」に詳しい使い方があります。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard37.htm
参照してみてください。
投稿者 覇王  (社会人)
投稿日時
2009/8/9 04:29:44
すみません。
何回も読んだのですが、よく理解できせん・・・・
これがソースなのですが
どこをどのようにすればいいのでしょうか?
Public Class Mail
Private Sub Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Send.Click
Try
Dim message As New System.Net.Mail.MailMessage(Mail_From.Text, Mail_To.Text)
message.Subject = Me.Mail_Sub.Text
message.Body = Me.Mail_Comment.Text
Dim client As New System.Net.Mail.SmtpClient()
client.Send(message)
Mail_From.Clear()
Mail_To.Clear()
Mail_Sub.Clear()
Mail_Comment.Clear()
MessageBox.Show("メールを送信しました。", "送信終了")
Catch ex As Exception
MessageBox.Show("送信できませんでした。", "エラー")
End Try
End Sub
End Class
Windowsプログラミングで
Mail_To
Mail_From
Mail_Sub
Mail_Comment
SMTP
という5つのTextBoxとbuttonを作りました。
何回も読んだのですが、よく理解できせん・・・・
これがソースなのですが
どこをどのようにすればいいのでしょうか?
Public Class Mail
Private Sub Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Send.Click
Try
Dim message As New System.Net.Mail.MailMessage(Mail_From.Text, Mail_To.Text)
message.Subject = Me.Mail_Sub.Text
message.Body = Me.Mail_Comment.Text
Dim client As New System.Net.Mail.SmtpClient()
client.Send(message)
Mail_From.Clear()
Mail_To.Clear()
Mail_Sub.Clear()
Mail_Comment.Clear()
MessageBox.Show("メールを送信しました。", "送信終了")
Catch ex As Exception
MessageBox.Show("送信できませんでした。", "エラー")
End Try
End Sub
End Class
Windowsプログラミングで
Mail_To
Mail_From
Mail_Sub
Mail_Comment
SMTP
という5つのTextBoxとbuttonを作りました。
投稿者 るきお  (社会人)
投稿日時
2009/8/10 06:02:01
こんにちは。
>どこをどのようにすればいいのでしょうか?
ホスト名(サーバー名)の指定が抜けているので最低でもこれを指定する必要があります。
ホスト名を指定するにはSmtpClientクラスのコンストラクタまたはHostプロパティを使用します。
>smtpclientの()にはSMTPサーバー名を入力するんですよね?
>自分の使ってるサーバー名を入力してテストしてみたら無事に
>メール送信に成功しました。
と書いてあるので、指定が必要なことはご存知なんだと思いますが、
投稿されているコード中には抜けていますね。
smtpのホスト名はメールサービスを契約しているプロバイダ(たとえば@nifty)が公開しています。
同じプロバイダと契約していてもホスト名が異なる場合があるので、個人ごとに設定する必要があります。
このことも
>ですが、自分のサーバーを設定してしまうと
>これを友達とかにあげた場合、サーバーが違うと
>メールを送信できないはずです・・・
と書いてあるのでご存じとは思うのですがコード中では抜けています。
>Windowsプログラミングで
>Mail_To
>Mail_From
>Mail_Sub
>Mail_Comment
>SMTP
>という5つのTextBoxとbuttonを作りました。
このSMTPというTextBoxを
サーバー側で認証が必要な場合はさらに認証情報をセットする必要があります。
これにはCredentialプロパティを使用します。
例
ネットワークが関連したプログラムではエラーの原因は無数に考えられるのでこれでもうまくいかないかもしれません。
大事なのは何が起こっているのか知ることです。
そのためにCatchブロック内で単にMessageBox.Show("送信できませんでした。", "エラー")とするのではなく、
なぜ送信に失敗したのかわかるようにフレームワークのエラーメッセージを表示するとよいでしょう。
上記の例ではその目的でCatchブロック内も少し変更しました。
※ただし、一般的に推奨されるスタンスでは汎用のExceptionのCatchはしないことになっています。
長くなるので割愛しますが機能的に問題があるわけではないのでこのくらいのプログラムなら上述のように書いてもよいと思います。
▼以下、投稿についての私の感想です。
今回のご質問は、ホスト名の指定について日本語の文章では書いてあるのにコード中で表現されていないので
正直①何がしたくて、②何がわからないのかよくわかりません。
>これがソースなのですが
>どこをどのようにすればいいのでしょうか?
このような聞き方をする前に、
どこがどうエラーになるのかの情報を提示したほうがよいです。
例
・○○の行で××というエラーメッセージが表示されます。
・エラーは何も発生しないのですがメールが届きません。
刈谷勇さんは、TextBoxではなく外部の設定ファイルに保存する方法がわからないのであろうと推量して
情報を提供されています。私もはじめの投稿を読んだ段階では同じ推量をしました。
それに対する覇王さんの返信の中で刈谷勇さんに対する返答が
>すみません。
>何回も読んだのですが、よく理解できせん・・・・
>これがソースなのですが
>どこをどのようにすればいいのでしょうか?
なので、結局なにをしたくて、何がわからないのかがわからないという状況になっています。
追加でご質問される場合は、
何がしたいのか、何がわからないのかをはっきり明記するとよいと思います。
例
・メール送信はできている。サーバー名を外部の設定ファイルから読み込む方法がわからない。
・メール送信はできている。サーバー名をTextBoxから入力する方法がわからない。
・メール送信はできたこともあるが、今できていない。まずは確実にメール送信できる方法が知りたい。
>どこをどのようにすればいいのでしょうか?
ホスト名(サーバー名)の指定が抜けているので最低でもこれを指定する必要があります。
ホスト名を指定するにはSmtpClientクラスのコンストラクタまたはHostプロパティを使用します。
>smtpclientの()にはSMTPサーバー名を入力するんですよね?
>自分の使ってるサーバー名を入力してテストしてみたら無事に
>メール送信に成功しました。
と書いてあるので、指定が必要なことはご存知なんだと思いますが、
投稿されているコード中には抜けていますね。
smtpのホスト名はメールサービスを契約しているプロバイダ(たとえば@nifty)が公開しています。
同じプロバイダと契約していてもホスト名が異なる場合があるので、個人ごとに設定する必要があります。
このことも
>ですが、自分のサーバーを設定してしまうと
>これを友達とかにあげた場合、サーバーが違うと
>メールを送信できないはずです・・・
と書いてあるのでご存じとは思うのですがコード中では抜けています。
>Windowsプログラミングで
>Mail_To
>Mail_From
>Mail_Sub
>Mail_Comment
>SMTP
>という5つのTextBoxとbuttonを作りました。
このSMTPというTextBoxを
Private Sub Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Send.Click
Try
Dim message As New System.Net.Mail.MailMessage(Mail_From.Text, Mail_To.Text)
message.Subject = Me.Mail_Sub.Text
message.Body = Me.Mail_Comment.Text
Dim client As New System.Net.Mail.SmtpClient(SMTP.Text)
client.Send(message)
Mail_From.Clear()
Mail_To.Clear()
Mail_Sub.Clear()
Mail_Comment.Clear()
MessageBox.Show("メールを送信しました。", "送信終了")
Catch ex As Exception
MessageBox.Show(ex.ToString, "エラー")
End Try
End Sub
サーバー側で認証が必要な場合はさらに認証情報をセットする必要があります。
これにはCredentialプロパティを使用します。
例
Private Sub Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Send.Click
Try
Dim message As New System.Net.Mail.MailMessage(Mail_From.Text, Mail_To.Text)
message.Subject = Me.Mail_Sub.Text
message.Body = Me.Mail_Comment.Text
Dim client As New System.Net.Mail.SmtpClient(SMTP.Text)
client.Credentials = New Net.NetworkCredential("userName", "password")
client.Send(message)
Mail_From.Clear()
Mail_To.Clear()
Mail_Sub.Clear()
Mail_Comment.Clear()
MessageBox.Show("メールを送信しました。", "送信終了")
Catch ex As Exception
MessageBox.Show(ex.ToString, "エラー")
End Try
End Sub
ネットワークが関連したプログラムではエラーの原因は無数に考えられるのでこれでもうまくいかないかもしれません。
大事なのは何が起こっているのか知ることです。
そのためにCatchブロック内で単にMessageBox.Show("送信できませんでした。", "エラー")とするのではなく、
なぜ送信に失敗したのかわかるようにフレームワークのエラーメッセージを表示するとよいでしょう。
上記の例ではその目的でCatchブロック内も少し変更しました。
※ただし、一般的に推奨されるスタンスでは汎用のExceptionのCatchはしないことになっています。
長くなるので割愛しますが機能的に問題があるわけではないのでこのくらいのプログラムなら上述のように書いてもよいと思います。
▼以下、投稿についての私の感想です。
今回のご質問は、ホスト名の指定について日本語の文章では書いてあるのにコード中で表現されていないので
正直①何がしたくて、②何がわからないのかよくわかりません。
>これがソースなのですが
>どこをどのようにすればいいのでしょうか?
このような聞き方をする前に、
どこがどうエラーになるのかの情報を提示したほうがよいです。
例
・○○の行で××というエラーメッセージが表示されます。
・エラーは何も発生しないのですがメールが届きません。
刈谷勇さんは、TextBoxではなく外部の設定ファイルに保存する方法がわからないのであろうと推量して
情報を提供されています。私もはじめの投稿を読んだ段階では同じ推量をしました。
それに対する覇王さんの返信の中で刈谷勇さんに対する返答が
>すみません。
>何回も読んだのですが、よく理解できせん・・・・
>これがソースなのですが
>どこをどのようにすればいいのでしょうか?
なので、結局なにをしたくて、何がわからないのかがわからないという状況になっています。
追加でご質問される場合は、
何がしたいのか、何がわからないのかをはっきり明記するとよいと思います。
例
・メール送信はできている。サーバー名を外部の設定ファイルから読み込む方法がわからない。
・メール送信はできている。サーバー名をTextBoxから入力する方法がわからない。
・メール送信はできたこともあるが、今できていない。まずは確実にメール送信できる方法が知りたい。
投稿者 覇王  (社会人)
投稿日時
2009/8/14 11:55:06
ありがとうございます^^
無事にSMTPサーバーを指定してメールを送ることができました。
無事にSMTPサーバーを指定してメールを送ることができました。
というメールを送るやつがありますけど・・・
smtpclientの()にはSMTPサーバー名を入力するんですよね?
自分の使ってるサーバー名を入力してテストしてみたら無事に
メール送信に成功しました。
ですが、自分のサーバーを設定してしまうと
これを友達とかにあげた場合、サーバーが違うと
メールを送信できないはずです・・・
なので、textを用意して、サーバー名を入力していただき、
それでbuttonを押したときにsmtpclientの()に情報を
入れる形にしたいのですが、どのようにしたらよろしいですか?