4

内部Exchange 2007サーバー(SMTPを使用)を経由して、C#コンソールアプリケーションから同じドメイン上のすべてのクライアントに自動電子メールを送信しようとしていますが、認証済みの送信者のみを許可する配布リスト。SmtpClientとDefaultNetworkCredentialsを使用して認証された送信者のみを許可する配布リストにメールを送信するにはどうすればよいですか?

#550 5.7.1 RESOLVER.RST.AuthRequired; authentication required ##rfc822;[email protected]

私はSystem.Net.Mail.SmtpClientを使用してSystem.Net.CredentialCache.DefaultNetworkCredentialsにCredentialsプロパティを設定しますが、どこかのラインに沿って、アカウントの資格情報がこのプログラムを実行しています:基本的に私は送るよメールがとの交換によって拒否得ています(私、有効なメールボックスを持つ有効なドメインユーザー)はExchangeに正しく渡されません。

私はユーザー名やパスワードを(コード自体や設定ファイルのいずれかに)ハードコードしたくないので、System.Net.CredentialCache.DefaultNetworkCredentialsを使用しています。 Windows認証を使用してプロセスをSMTPサーバーで認証します。

using System; 
using System.Net.Mail; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main() 
     { 
      var smtpClient = new SmtpClient 
           { 
            Host = "MAIL", 
            Port = 25, 
            DeliveryMethod = SmtpDeliveryMethod.Network, 
            Credentials = System.Net.CredentialCache.DefaultNetworkCredentials 
           }; 

      var mailMessage = new MailMessage 
            { 
             Body = "Testing", 
             From = new MailAddress(Environment.UserName + "@example.com"), 
             Subject = "Testing", 
             Priority = MailPriority.Normal 
            }; 

      mailMessage.To.Add("[email protected]"); 

      smtpClient.Send(mailMessage); 
     } 
    } 
} 

私は自分自身としてこれを実行するたびに(再び、私は上の有効なユーザーだ:ここで

は、私は(ドメイン名がanonomizedされている)問題を再現するために使用してきたテストプログラムでありますExchangeサーバー上の既存のメールボックスを持つドメイン、)私は応答との交流から配信不能バウンスメッセージが表示されます。

#550 5.7.1 RESOLVER.RST.AuthRequired; authentication required ##rfc822;[email protected]

私たちのExchangeサーバー管理者に話し、彼はExchangeサーバーのEVから次のエラーを見ました耳鼻咽喉科ログ:

Account For Which Logon Failed: 
    Security ID: NULL SID 
    Account Name: 
    Account Domain: 

Failure Information: 
    Failure Reason: Unknown user name or bad password. 
    Status:   0xc000006d 
    Sub Status:  0xC0000064 

は、どうやらそのステータスコードとサブステータスコードに変換:

0xc000006d This is either due to a bad username or authentication information. Usually logged as status code with 0xc0000064 as substatus

0xC0000064 user name does not exist

だから、再び、それはどこかのラインに沿っているかのようだ、私のWindows資格情報がありますSmtpClient.CredentialsSystem.Net.CredentialCache.DefaultNetworkCredentials

に設定していても、Exchangeサーバーには渡されません。

アイデア?

ありがとうございます!ユーザー名を渡す必要が

+0

@Austin - おかげで迅速な編集が私の貧弱な書式設定をクリーンアップするために – russcollier

+0

は、ユーザー名、パスワードを渡すことについて考えているとがあれば個人のグループがちょうどセットアップ:-)、あなたは束に私を打ちますメールサーバーまたはIIS上のメールアカウントを開き、そのグループに所属する個人の電子メールを追加します。あなたはMSDNにチェックしましたか:サイト - http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.credentials.aspx – MethodMan

+0

私はコメントで私のメモに従うことができることを願って//サーバーsmpt.somedomain.com ok ..あなたのサーバに置き換えてください – MethodMan

答えて

3

、パスワードここ

が、これはコードで心に留めておく...私はそれを行うだろうかのコードスニペットで、あなたのユースケース

に合わせて必要な変更を加える必要がありスニペット以下
MailClient = new SmtpClient(); 
MailClient.Credentials = new System.Net.NetworkCredential(username, password); 

別の例であるが、サーバー変数を使用しています..あなたがしようとすると、私はあなたがあなたのdomain.comとして 例を渡すことができます例えば、サーバーを知っているよう行う必要があるかもしれないものを、この: // SmtpClientクライアント=新しいSmtpClient( "smtp.contoso.com"); //これはサーバーになります // client .Credentials = CredentialCache。DefaultNetworkCredentials;

public static void CreateBccTestMessage(string server) 
    { 
     MailAddress from = new MailAddress("[email protected]", "Ben Miller"); 
     MailAddress to = new MailAddress("[email protected]", "Jane Clayton"); 
     MailMessage message = new MailMessage(from, to); 
     message.Subject = "Using the SmtpClient class."; 
     message.Body = @"Using this feature, you can send an e-mail message from an application very easily."; 
     MailAddress bcc = new MailAddress("[email protected]"); 
     message.Bcc.Add(bcc); 
     SmtpClient client = new SmtpClient(server); 
     client.Credentials = CredentialCache.DefaultNetworkCredentials; 
     Console.WriteLine("Sending an e-mail message to {0} and {1}.", 
      to.DisplayName, message.Bcc.ToString()); 
     try 
     { 
      client.Send(message); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Exception caught in CreateBccTestMessage(): {0}", 
         ex.ToString()); 
     } 
    } 
+1

申し訳ありませんが、私はこれを言及すべきでした - 私はCredentialCache.DefaultNetworkCredentialsを使用しています。構成)。むしろ、プロセスを実行している現在のユーザーのWindows資格情報に頼っています。 SmtpClientドキュメントは、これが可能であると信じさせるでしょうが、何らかの理由でこのケースでは機能しません。 – russcollier

+0

私は追加サンプルを投稿します。 "Server"変数に細心の注意を払ってください。 – MethodMan

関連する問題