- - PR -
SmtpClientクラスを使用したSMTP認証メール送信に失敗する。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-12-06 23:04
お世話になります。
SmtpClientでSMTP認証メールを送信しようとすると、以下のエラーにより送信できな い現象が起こっています。 System.Net.Mail.SmtpException: 構文エラーです。コマンドが認識できません。 サーバーの応答: Authentication required エラーコードは505 .NET Framework1.1で存在するSystem.Web.Mail.SmtpMailクラスを使用すると 送信できます。 (下記コード参照。本コードのsmtpClient.Sendで問題の例外が出ます。) メール送信を試みているmailサーバでサポートしている認証方式が、PLAINと CRAM-MD5なのですが、SmtpClientクラスではこれらの方式に対応していないので しょうか? [環境] Windows2003Server Standard VS2005 ---以下、コード using System; using System.Collections.Generic; using System.Text; using System.Web.Mail; using System.Net.Mail; using System.Diagnostics; namespace SmtpClient { class MailClass { /// <summary> /// コンストラクタ /// </summary> public MailClass() { } /// <summary> /// メール送信 /// </summary> /// <param name="hostName">メールサーバホスト名。例:mailServ.co.jp</param> /// <param name="mailAdr">メールアドレス。例:user1@yahoo.co.jp</param> /// <param name="usrName">認証ユーザ名。例:user1</param> /// <param name="passwd">パスワード。例:user1Pass</param> public void SendMail(string hostName, string mailAdr, string usrName, string passwd) { // //ここから:SmtpMailクラスを使用 .Net1.1 // //メールメッセージを作成。 System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage(); mailMessage.To = mailAdr; mailMessage.From = mailAdr; mailMessage.Subject = "[Test]Smtp送信テスト(1.1)"; mailMessage.Body = "SMTP送信テストです。"; if (!string.IsNullOrEmpty(usrName)) { // SMTP認証に設定 mailMessage.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1; mailMessage.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = usrName; mailMessage.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = passwd; } try { //メール送信 SmtpMail.SmtpServer = hostName; SmtpMail.Send(mailMessage); } catch (Exception ee) { Debug.WriteLine(ee.ToString()); } // //ここまで // // //ここから:SmtpClientクラスを使用するパターン .Net2.0 // System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(hostName); //SMTP認証を使用する場合、ユーザ名、パスワードを指定。 smtpClient.UseDefaultCredentials = false; if (!string.IsNullOrEmpty(usrName)) { smtpClient.Credentials = new System.Net.NetworkCredential(usrName, passwd); } System.Net.Mail.MailMessage mailMessage2 = new System.Net.Mail.MailMessage(mailAdr, mailAdr, "[Test]Smtp送信 テスト(2.0)", "SMTP送信テストです。"); mailMessage2.BodyEncoding = Encoding.GetEncoding("Shift-JIS"); mailMessage2.SubjectEncoding = Encoding.GetEncoding("Shift-JIS"); mailMessage2.Sender = new MailAddress(mailAdr); mailMessage2.ReplyTo = new MailAddress(mailAdr); try { //メール送信 smtpClient.Send(mailMessage2); } catch (SmtpException se) { Debug.WriteLine(se.ToString()+"\\r\\nコード:"+se.StatusCode+" "+se.StatusCode); } catch (Exception ee) { Debug.WriteLine(ee.ToString()); } // // ここまで // } } } |
|
投稿日時: 2007-01-11 13:53
SMTP認証でメールを送信する(.NET Framework 2.0) VB2005(.NET Framework2.0)でSMTP認証を使ったメールの送信サンプルです。
[VB.NET] Imports System.Net Imports System.Net.Mail Module Program Sub Main() Dim Message As New MailMessage("from", "to", "subject", "body") Dim Client As New SmtpClient("smtp server name") Client.Credentials = New NetworkCredential("user name", "password") 'Client.EnableSsl = True 'SSL認証のときは、コメントアウト Client.Timeout = 100000 '←これが無いとダメ Client.Send(Message) End Sub End Module |
1