2012-03-21 57 views
1

我正在開發使用Web窗體的ASP.NET應用程序,並且我絆倒了從Microsoft Exchange發送電子郵件的問題(我認爲是微不足道的)服務器帳戶。無法通過ASP.net將電子郵件發送到Exchange服務器上的本地網絡外的收件人

我使用ExchangeService類(使用Microsoft EWS API)和AutodiscoverUrl函數連接到Exchange服務器。

這是我的代碼:

protected void Button2_Click(object sender, EventArgs e) 
{ 
    string from = "[email protected]"; 
    string to = "[email protected]"; 

    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
    service.AutodiscoverUrl(from); 

    EmailMessage message = new EmailMessage(service); 
    message.Subject = "Email Subject"; 
    message.Body = TextBoxMessage.Text; 
    message.ToRecipients.Add(to); 
    message.Save(); 

    message.SendAndSaveCopy(); 
} 

的問題是,我只能發送郵件從和到Exchange服務器(從我公司只地址)本地郵件地址即。發送到「外部」電子郵件如gmail不起作用,儘管SendAndSaveCopy調用不會引發任何異常。

我應該提到,這隻適用於我公司本地網絡內的我的開發服務器。如果我從本地網絡斷開連接,則無法再連接到Exchange服務器並引發異常。

我在做什麼錯?

+3

確保交換服務器設置爲從正在運行應用/網站的IP地址進行中繼。我之前遇到過這個問題,這通常是問題。 – Brian 2012-03-21 19:34:38

+0

另外,您可以檢查交換服務器日誌。 – 2012-03-21 19:37:35

+1

這很可能不是您的代碼的問題,而是與Exchange服務器的配置有關。大多數擁有優秀管理員的商店對哪些應用程序和哪些機器可以中繼電子郵件施加限制,甚至可能會有一些第三方系統在郵件離開您的網絡時遇到郵件。從安全角度來看,這是一種很好的做法,因爲它限制了惡意程序在網絡中安裝並開始嘗試發送電子郵件時可能造成的損害。簡而言之,由於良好的安全性,您可能會遇到問題,需要與管理員交談。 – David 2012-03-21 19:37:55

回答

0

事實證明,我的服務器不接受AutodiscoverUrl,我不得不手動設置憑證與 服務emailaccount.Credentials =新的WebCredentials(「用戶名」,「密碼」,「域」);

謝謝您的意見,它真的幫助!

相關問題