C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: yahooアカウントでメール送信


(過去ログ 124 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■74052 / inTopicNo.1)  yahooアカウントでメール送信
  
□投稿者/ むぅ (3回)-(2014/11/26(Wed) 14:03:18)

分類:[C#] 

VS2010 C# Win7 32bit
お世話になります。
自前のアプリからYahooメールアカウントでメール送信を行いたいのですが、送信実行でエラーが出てしまいます。

System.Text.Encoding enc = System.Text.Encoding.GetEncoding(50220);
//メッセージの作成
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
//件名と本文の文字コードを指定する
msg.SubjectEncoding = enc;
msg.BodyEncoding = enc;
msg.From = new System.Net.Mail.MailAddress("hoge@ybb.ne.jp", "hoge", enc);
msg.To.Add(new System.Net.Mail.MailAddress("hoge@ybb.ne.jp", "hoge", enc));

//件名
msg.Subject = "こんにちは";
//本文
msg.Body = "こんにちは。\r\n\r\nそれではまた。";

System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient();
//SMTPサーバーなどを設定する
sc.Host = "ybbsmtp.mail.yahoo.co.jp";
sc.Port = 465;
sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
sc.Credentials = new System.Net.NetworkCredential("username", "pass");

sc.Timeout = 100000;
sc.EnableSsl = true;

//メッセージを送信する
try
{
sc.Send(msg);
}
catch (Exception err)
{
MessageBox.Show(err.Message.ToString());
}

//後始末
msg.Dispose();


sc.Send(msg)の実行で10秒程度の待ち時間があってからエラーがでます。
メッセージ内容:メールを送信できませんでした。


メールサーバーアドレス、ポート番号、ユーザ名、パスワードはメールソフト(ベッキー)で設定して受信しているものと同じ内容です。
また、メールソフトでSMTPSを使用するよう設定しているので、sc.EnableSsl = true としてみました。

メールを送信するのにほかに何が必要でしょうか。
ご教示の程、よろしくお願いします。

引用返信 編集キー/
■74053 / inTopicNo.2)  Re[1]: yahooアカウントでメール送信
□投稿者/ WebSurfer (399回)-(2014/11/26(Wed) 15:00:09)
No74052 (むぅ さん) に返信

> 自前のアプリからYahooメールアカウントでメール送信を行いたいのですが、送信実行でエラーが出てしまいます。

Yahoo メールなど使ったことがないので、その仕様がわかりませんが・・・

SmtpClient は AUTH SMTP は LOGIN しかサポートしていないとか、SMTP サーバー
が AUTH SMTP LOGIN をサポートしていても相性の問題で認証が失敗するとか、暗号
化は STARTTLS しかサポートしてないとか、いろいろ制約があるのですが、そのあた
りの問題はクリアになっているのでしょうか?

WireShark などのパケットキャプチャツールで SMTP サーバーとのやりとりをキャ
プチャして、何処で問題が起こっているのか調べられませんか?

その前に、一般的にメールが送信できない時に考えられる原因には以下のような項目
がありますが、これらは問題ないと思って良いのですよね?

(1) ネットに接続されてない
(2) SMTP サーバアドレス指定の間違い
(3) メールアカウント、パスワードの間違い
(4) ポートの間違い
(5) OP25B
(6) アクセス禁止(例:社内 LAN → 社外メールサーバ)
(7) セキュリティ関係のソフト(ファイアウォール含む)によるブロック
引用返信 編集キー/
■74054 / inTopicNo.3)  Re[1]: yahooアカウントでメール送信
□投稿者/ ainax (4回)-(2014/11/26(Wed) 16:28:04)
No74052 (むぅ さん) に返信

恐らく ybb の場合、対応している Ssl 通信が Smtp over Ssl のみだからではないかと思います。

SmtpClinet が対応している Ssl 通信は、 STARTTLS のみで、 SMTP over SSL に対応していないそうです。
(恐らく .net のライブラリにも用意されていないんじゃないかと。)

で、Smtp over Ssl ですが、 SmtpClient では対応していないので、自前で実装するかライブラリを
利用するかしかなさそうです。

一応、 http://homepage2.nifty.com/nonnon/SoftSample/CS.NET/SampleSmtpSsl2.html にある
コードで試しに ybb でメール送信を試みてみましたが、 port に 465 を設定してメール送信できました。
(コードの流れを追っていないので、本当に Smtp over Ssl を利用しているのかどうか未検証ですが、、、
というか、 port に 465 を設定していれば、 Ssl を利用していると思っているだけなんですが。)


# ちなみに、 Port に 587 を指定し、 EnableSsl に ture を設定したした上で、 ybb に接続を試みましたが、
# 接続できませんでした。 STARTTLS に対応していないのかもしれません。
# ただし、 Port に 587 を設定し、 EnableSsl を false にした Ssl を使わない設定ではメール送信できました。

引用返信 編集キー/
■74056 / inTopicNo.4)  Re[2]: yahooアカウントでメール送信
□投稿者/ むぅ (4回)-(2014/11/26(Wed) 17:18:48)
ainax さま、WebSurfer さま
お世話になります。
情報、ありがとうございます。

ainaxさま
教えていただいたサイトのソースでメール送信ができました。
これから内容についてじっくり読んで理解を進めたいと思います。

ありがとうございましたm(__)m
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -