【问题标题】:Validate email address on exchange server验证 Exchange 服务器上的电子邮件地址
【发布时间】:2011-05-07 11:49:18
【问题描述】:

我允许用户管理存储在数据库中的分发列表。用户只能输入@mydomain.com 的电子邮件。然后,基于 Web 的应用程序获取分发列表并发送电子邮件。我想在从应用程序发送电子邮件之前验证电子邮件是否有效。

要发送电子邮件,我使用此代码:

    Dim SendTo As String = "ThisIsNotARealEmailAddress@mydomain.com"
    Dim SentFrom As String = "me@mydomain.com"
    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 <ThisIsNotARealEmailAddress@mydomain.com>... User unknown

当电子邮件地址添加到数据库时,是否有验证电子邮件的方法,而不是发送电子邮件时的try catch 块?

【问题讨论】:

  • 您可以在添加电子邮件地址时对 AD 域进行查询。那里应该有很多例子。但是,除非您的管理员也更新您的数据库,否则在更改或销毁电子邮件地址时您仍然会遇到错误。
  • @Bill ~ 我没有考虑电子邮件地址何时更改或被删除。我会尽我所能在提交时从 AD 获得一封有效的电子邮件,然后在发送时发现错误。谢谢

标签: vb.net smtp exchange-server email-validation


【解决方案1】:

用户只发送到您的域?你控制域?它是一个Windows域?只需查询 AD 并从 AD 获取他们的电子邮件地址,而无需询问他们。那会有效吗?我认为这是一个 Windows 应用程序,而不是一个网络应用程序。

【讨论】:

  • 我考虑过针对 Active Directory 验证电子邮件。我不是邮件服务器的人,所以让我问一下:如果我针对 AD 进行验证,是否会出现邮件服务器上存在邮箱但没有 AD 记录的情况?
  • @zeroef ~ Exchange 上有很多邮箱在 AD 中不存在,但这里有一个问题。如果他们不在 AD 中,他们将无法访问域,因此他们无法登录 Exchange。此外,按照我的方法,您不需要向他们询问电子邮件地址,您只需将其从 LDAP 中变出即可。如果 AD 帐户中不存在,则提示您输入电子邮件地址。
  • @drachenstern - 我看到了我们的脱节。从当前登录的用户那里提取电子邮件地址没有问题。我有一个用户,输入其他用户的多个电子邮件地址。
  • @zeroef ~ 哦,在这种情况下,只需验证针对 AD 键入的内容。是的,您可以假设活动的电子邮件地址会在那里。或者,只需向他们发送电子邮件并注意退回,这是唯一经过验证的方法。
  • @drachenstern - 添加到分发列表时发送确认消息可以用一块石头杀死两只鸟。它可以验证电子邮件是否有效,并为用户提供“取消订阅”发行版的选项。
猜你喜欢
  • 1970-01-01
  • 2017-06-20
  • 2014-06-12
  • 1970-01-01
  • 2013-12-19
  • 2021-04-03
  • 1970-01-01
  • 2018-03-13
  • 2011-09-02
相关资源
最近更新 更多