- PR -

Smtp-Auth機能を使用してのメール送信

1
投稿者投稿内容
oba
会議室デビュー日: 2005/05/09
投稿数: 13
投稿日時: 2007-02-23 17:41
題記の通り、Smtp-Auth機能を利用して認証手続きをした上でメールの送信を
したいのですがうまくいきません。

どのようにすればSmtp-Auth機能を使用できるのかご存知の方がいらっしゃれば
ご教授願います。


・開発環境
OS:WinXP Pro
ツール:VisualStudio2005
言語:C#

以上、よろしくお願いします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2007-02-23 18:09
こんばんは。

SmtpClient.Credentials プロパティ に認証情報をセットしてください。

サンプルコードが MSDN の .NET Framework 2.0 コア機能解説 にあります。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
oba
会議室デビュー日: 2005/05/09
投稿数: 13
投稿日時: 2007-02-24 00:17
回答ありがとうございます。
サンプルを参考にコードを記述したのですが、うまくいきません。

以下コード

string to = "送信先";
string from = "送信元";
string subject = "テスト";
string body = "テストです。";

MailMessage message = new MailMessage(from, to, subject, body);
SmtpClient client = new SmtpClient("SMTPサーバ");
client.Credentials = new NetworkCredential("送信元のメール名称", "パスワード");
client.Send(message);

このように記述したのですがタイムアウトエラーになってしまいます。
ほかにも何か設定などが必要なのでしょうか?
ご教授願います。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2007-02-24 09:02
おはようございます。

DOBON.NET の SMTP認証でメールを送信する に載っているサンプルには「Timeout を指定しないと失敗する報告があるようだが、不明」とあります。
これかもしれません。

SmtpClient.Timeout プロパティ
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
oba
会議室デビュー日: 2005/05/09
投稿数: 13
投稿日時: 2007-02-24 11:02
回答ありがとうございます。

タイムアウトを以下のように指定したのですが、
やはりタイムアウトエラーが発生してしまいます。
色々と調べてはいるのですが、うまくいきません。

client.Timeout = 10000;

度々申し訳ありませんが、ご教授願います。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2007-02-24 11:58
ueです。

引用:

obaさんの書き込み (2007-02-24 11:02) より:

タイムアウトを以下のように指定したのですが、
やはりタイムアウトエラーが発生してしまいます。


うーん、.net が出力するエラーとメールサーバのログを突き合わせると何か見えてくるかもしれません。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
oba
会議室デビュー日: 2005/05/09
投稿数: 13
投稿日時: 2007-02-24 16:01
度々アドバイスありがとうございます。
以下のコードで送信することができました。

コード:
string to = "送信元";
string from = "送信先";
string subject = "テスト";
string body = "テストです。";

MailMessage message = new MailMessage(from, to, subject, body);
message.BodyEncoding = Encoding.GetEncoding("iso-2022-jp");
SmtpClient client = new SmtpClient("SMTPサーバ",587);
client.Credentials = new NetworkCredential("送信元のメール名称", "パスワード");
client.EnableSsl = false;
//client.UseDefaultCredentials = true;  
client.Timeout = 10000;
client.Send(message);



原因
・SSLをサポートしていない。

・以下のコードを入れていた。(このプロパティについてはきっちりと調べておこうと思います。)
client.UseDefaultCredentials = true;

・ポート番号を標準の25から587に変更することで接続可能となった。

私自身よくわからないことだらけなので、勉強しながら改良していきたいと思います。

色々とありがとうございました。
また、なにかありましたらよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)