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,但沿線的某處,該帳戶的憑據運行此程序(我,一個有效郵箱的有效域用戶)沒有正確傳遞給Exchange。

我使用System.Net.CredentialCache.DefaultNetworkCredentials,因爲我不想硬編碼用戶名或密碼(無論是在代碼本身還是在任何配置文件中)。我希望該流程使用Windows身份驗證與我們的SMTP服務器進行身份驗證。

這是我一直在使用重現該問題(域名已經anonomized)測試程序:

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); 
     } 
    } 
} 

每當我跑這是我自己(再次,我是一個有效的用戶上域,與Exchange服務器上的現有郵箱)我得到一個無法投遞退回郵件從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憑據沒有傳遞到Exchange服務器,即使我將SmtpClient.Credentials設置爲System.Net.CredentialCache.DefaultNetworkCredentials

任何想法?

在此先感謝!

+0

@Austin - 感謝快速編輯清理我的格式不好,你打我的一羣:-) – russcollier 2012-03-02 17:06:39

+0

你有沒有想過通過用戶名,密碼,如果只是設置了一組個人郵件服務器或IIS上的郵件帳戶,並添加屬於該組的個人的電子郵件。你檢查到MSDN:網站 - http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.credentials.aspx – MethodMan 2012-03-02 17:20:09

+0

我希望你可以按照我的筆記在評論//服務器是smpt.somedomain.com確定..取代您的服務器 – MethodMan 2012-03-02 17:47:50

回答

3

你需要傳遞的用戶名,密碼

這裏是我會怎麼做一個代碼片段......記住,這是一段代碼,你需要進行必要的修改,以適應你的使用情況

MailClient = new SmtpClient(); 
MailClient.Credentials = new System.Net.NetworkCredential(username, password); 
下面

是另一個例子,但使用服務器變量..這也許你需要做的嘗試,讓我什麼瞭解,例如,你可以通過爲您的domain.com 例如服務器: // SmtpClient客戶端=新的SmtpClient(「smtp.contoso.com」); //這將是服務器 //客戶端.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 2012-03-02 17:32:58

+0

我會發佈一個額外的樣本..密切關注「服務器」變量確定給我一秒 – MethodMan 2012-03-02 17:41:05

相關問題