2010-11-09 123 views
3

我允許用戶管理存儲在數據庫中的通訊組列表。用戶只能輸入@ mydomain.com的電子郵件。一個基於Web的應用程序然後獲取分發列表併發送電子郵件。我想在從應用程序發送電子郵件之前驗證電子郵件是否有效。在交換服務器上驗證電子郵件地址

要送我正在使用此代碼的電子郵件:

Dim SendTo As String = "[email protected]" 
    Dim SentFrom As String = "[email protected]" 
    Dim MessageBody As String = "blah blah blah" 
    Dim MessageSubject As String = "This is the subject" 


    Dim mm As New MailMessage(SentFrom, SendTo) 
    mm.Subject = MessageSubject 
    mm.IsBodyHtml = False 
    mm.Priority = MailPriority.High 
    mm.Body = MessageBody 

    Dim smtp As New SmtpClient() 
    smtp.Send(mm) 

如果的SendTo是不是一個有效的電子郵件地址,服務器返回此錯誤:

Mailbox unavailable. The server response was: 5.1.1 <[email protected]>... User unknown 

反正是有驗證當電子郵件地址被添加到數據庫時發送電子郵件,而不是在發送電子郵件時使用try catch區塊?

+1

添加電子郵件地址時,您可以針對AD域執行查詢。那裏應該有很多例子。但是,除非您的管理員也更新您的數據庫,否則當電子郵件地址更改或銷燬時您仍然會出現錯誤。 – Bill 2010-11-09 20:47:11

+0

@Bill〜我沒有考慮電子郵件地址何時更改或刪除。我會盡我所能,在提交時從AD獲取有效的電子郵件,然後在發送時發現錯誤。謝謝 – zeroef 2010-11-09 20:52:51

回答

2

用戶只發送到您的域名?你控制域名?它的Windows域?只需查詢AD並從AD獲取他們的電子郵件地址而不要求他們。那有效嗎?我認爲這是一個Windows應用程序,而不是一個Web應用程序。

+0

我已經考慮驗證電子郵件對Active Directory。我不是一個郵件服務員,所以讓我問一下:如果我對AD進行驗證,會不會有郵件服務器上存在郵箱但沒有AD記錄的情況? – zeroef 2010-11-09 20:35:53

+0

@zeroef〜在交易所有很多郵箱不存在於AD中,但是這裏有個問題。如果他們不在AD中,他們無法進入域名,因此他們無法登錄到Exchange。另外,按照我的方法,你不要求他們提供一個電子郵件地址,你只是把它從LDAP中提煉出來。如果AD帳戶中不存在,那麼您提示輸入電子郵件地址。 – jcolebrand 2010-11-09 20:38:09

+0

@drachenstern - 我看到我們的斷開連接。從當前登錄的用戶中抽取電子郵件地址沒有問題。我擁有的是一個用戶,輸入其他用戶的多個電子郵件地址。 – zeroef 2010-11-09 20:41:27