2011-06-27 62 views
4

我有一個在我們公司在這裏使用電子郵件約400用戶的集合,我們正在開始一個內部網對他們來說,我使用的.Net框架(C#)應用層一個內聯網。我們希望使用與他們的電子郵件相同的憑據對這些用戶進行身份驗證,但我們的電子郵件提供商沒有此類服務,因此我有使用SMTP服務器(需要身份驗證)對其進行身份驗證的想法。我搜索過的SmtpClientAuthenticate()方法,但無濟於事驗證用戶使用SMTP

,有沒有辦法身份驗證只。有沒有人需要解決這類問題?我想我必須打開SMTP服務器的套接字並自己發送命令,但也許有一個更簡單的方法來實現這一點。

回答

4

因爲,你有一個SMTP服務器,我會假設你也有一個POP3服務器。我認爲我也是安全的,假設POP3和SMTP的憑證是一樣的。

如果我的假設是正確的(很有可能),您可以通過POP3而不是SMTP來驗證它們。

所以,你可以使用Pop3Client類,它提供了多種身份驗證方法:

這樣一來,你的代碼將:

  1. 連接
  2. 進行身份驗證(檢查例外)
  3. 斷開

而且你都設置!

+0

這樣做的伎倆,謝謝。 –

0

對您的SMTP服務器使用SmtpClient,您正在請求服務。您的應用程序應僅指定是否使用Windows身份驗證(根據您的Intranet的配置方式,這將是Kerberos或NTLM)或憑據規範,以及是否使用SSL。

至於申請認證,您可以參考System.Security.Principal.WindowsIdentity.GetCurrent()WindowsIdentity。更具體地說,您可以使用IsAuthenticated屬性。

您嘗試將SMTP服務器的任何調用之前,如果你想使用Windows身份驗證,嘗試這樣的事情:

SmtpClient client = new SmtpClient(server, port); 
client.Credentials = CredentialCache.DefaultNetworkCredentials; 

然後讓SMTP服務器授權的用戶是否可以真正執行嘗試的操作。

如果你想說的話,禁用一個動作按鈕,因爲SMTP服務器會拒絕用戶嘗試動作和你要積極主動,並防止他從用戶做一些他做不到,那麼拒絕一定是確定之前,擊中SMTP服務器(即你不會單純依靠SMTP服務器上告訴你這個,你就需要在地方某種業務安全層)。