2010-11-09 131 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