2012-03-27 13 views
0

this質問に記載されているコードを使用しています。しかし、電子メールを送信すると、次のエラーが発生します。電子メールを送信する際のエラー

メールボックスが利用できません。サーバーの応答は: に認証してくださいこのメールサーバーを使用

何が間違っている可能性がありますか?

UPATE:はここにApp.configファイルに次のコードでは

System.Net.Mail.SmtpClient Client = new System.Net.Mail.SmtpClient(); 
MailMessage Message = new MailMessage("From", "To", "Subject", "Body"); 
Client.Send(Message); 

です。

+0

認証を使用すると、資格情報を提供する必要があることに聞こえますか?ユーザーのパスワード? – gbianchi

+0

私は設定ファイルにそれらを提供しました。私は二重チェックし、それらは正しい値です。 – imak

+1

あなたのコードを教えてください。作成した編集内容を確認したいと思います。 – Msonic

答えて

2

掲載されているコードは機能するはずです。そうでない場合は、web.configからコードを読み取るのではなく、コードビハインドでユーザー名とパスワードを設定してみてください。 systemnetmail.comから

コードサンプル:

static void Authenticate() 
{ 
    //create the mail message 
    MailMessage mail = new MailMessage(); 

    //set the addresses 
    mail.From = new MailAddress("[email protected]"); 
    mail.To.Add("[email protected]"); 

    //set the content 
    mail.Subject = "This is an email"; 
    mail.Body = "this is the body content of the email."; 

    //send the message 
    SmtpClient smtp = new SmtpClient("127.0.0.1"); 

    //to authenticate we set the username and password properites on the SmtpClient 
    smtp.Credentials = new NetworkCredential("username", "secret"); 
    smtp.Send(mail); 

} 
+0

チップをありがとう。やってみます – imak

1

はい、メールを中継するには、メールを送信する前に認証する必要があります。 smptpサーバーにアカウントを持っている場合は、それに応じてSmtpClientオブジェクトの資格情報を設定できます。 smtpサーバでサポートされている認証メカニズムによっては、ポートなどが異なります。 MSDNから

例:

public static void CreateTestMessage1(string server, int port) 
{ 
      string to = "[email protected]"; 
      string from = "[email protected]"; 
      string subject = "Using the new SMTP client."; 
      string body = @"Using this new feature, you can send an e-mail message from an application very easily."; 
      MailMessage message = new MailMessage(from, to, subject, body); 
      SmtpClient client = new SmtpClient(server, port); 
      // Credentials are necessary if the server requires the client 
      // to authenticate before it will send e-mail on the client's behalf. 
      client.Credentials = CredentialCache.DefaultNetworkCredentials; 

     try { 
       client.Send(message); 
     } 
      catch (Exception ex) { 
       Console.WriteLine("Exception caught in CreateTestMessage1(): {0}", 
        ex.ToString()); 
     }    
} 

一番下の行は、資格情報がSMTPサーバーに渡されていないか、他あなたがそのエラーを取得することはないだろうということです。

関連する問題