2013-04-01 97 views
1

我目前正在嘗試使用SmtpClient發送郵件與交換2003.使用下面的代碼將不會發送電子郵件,但它不會拋出一個異常,我認爲它意味着它正在建立一個連接到交換服務器,因爲。此外,對於服務器設置我嘗試mail.server.com以及IP地址,它仍然不會引發異常。Exchange 2003與C#smtpclient

 public static void emailTest() 
    { 
     string fromEmail = @"[email protected]"; 
     string ToEmail = @"[email protected]";   
     string body = "C Stuck Batches"; 
     string subject = "C Stuck Batches"; 

     try 
     { 
      SmtpClient MyMail = new SmtpClient("x.x.x.x"); 
      MyMail.DeliveryMethod = SmtpDeliveryMethod.Network; 
      MyMail.UseDefaultCredentials = false; 
      MyMail.Credentials = new NetworkCredential(@"domain\user", "password"); 

      MyMail.Send(fromEmail, ToEmail, subject, body); 
      MessageBox.Show("Sent", "SENT", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Exception", "Exception", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 
     } 
    } 

我已經閱讀了其他幾個問題,但據我所知,大多數人正在得到某種異常或超時。由於這看起來好像它連接,我不知道問題是什麼。如果無法訪問服務器,它會拋出異常嗎?如果我向服務器拋出一個不同的IP,它會拋出一個異常。

此外,我已經嘗試了服務器的IP和mail.xx.com,它不會拋出一個異常,但如果我把任何其他地址,它會失敗。

在此先感謝anyhelp!

+0

域\用戶是否有權發送[email protected]? – RandomUs1r

+0

@ RandomUs1r是的我已經使用了與帳戶關聯的域用戶以及管理員。 – h8a

+0

這是迄今爲止最常見的問題,我可能會啓動虛擬機並嘗試使用您正在使用的域帳戶登錄Outlook,並查看是否可以添加和發送郵箱以絕對確定。其他可能出錯的東西......嘗試將端口指定爲smptclient的第二個參數,您可以嘗試查看交換服務器日誌所說的內容。你的代碼看起來不錯。 – RandomUs1r

回答

1

我遇到的問題是,即使域管理員也無法訪問SMTP中繼。我必須確保用戶在SMTP中繼中被認證。無論驗證用戶是否與使用的電子郵件地址相同,該用戶都無法訪問。一旦糾正,它可以發送沒有問題。

2

您的Exchange服務器是否設置爲從您的IP地址中繼郵件?如果不是,可以在不拋出異常的情況下「丟棄」郵件(客戶端連接正確,它是後端丟棄電子郵件)

This link提供了有關如何在Exchange 2003上配置中繼的更多信息我假設「eSupport」將等於您的應用程序在這個例子中,即運行您的代碼的機器的IP)。

登錄到Exchange 2003服務器(在上例中爲192.168.5.25)並啓動Exchange系統管理器。

展開organization_name對象,然後展開「服務器」節點。展開要控制郵件中繼的服務器的server_name對象,然後展開「協議」節點。

展開SMTP節點,右鍵單擊您要控制郵件中繼的虛擬SMTP服務器,然後單擊屬性

單擊中繼。

在中繼限制對話框中,有幾個選項可用。 「僅下面的列表」選項默認啓用;該選項下面的列表是空的。

點擊添加。輸入運行eSupport的服務器的IP地址(在我上面的示例中爲192.168.5.80)。

在中繼限制對話框中,單擊確定。

單擊應用,然後在默認SMTP虛擬服務器屬性對話框中單擊確定。

+0

感謝您的快速響應。我檢查過,它已經設置爲允許本機訪問smtp中繼。 – h8a