当前位置:  开发笔记 > 编程语言 > 正文

我可以检查电子邮件地址是否有效?

如何解决《我可以检查电子邮件地址是否有效?》经验,为你挑选了1个好方法。

我该如何实现以下逻辑?

用户使用电子邮件地址注册

如果提供的电子邮件地址是有效的电子邮件地址则用户帐户被激活

或者如果是假电子邮件,则不会激活用户帐户

我怀疑我能抓住 - "发送失败的回复消息",对吗?无论如何你会建议实施上述逻辑?

PS.无论如何,我都必须找到一种方法,客户想要它=)



1> Thomas..:

您可能希望不仅确保电子邮件地址有效,而且还确保它属于此特定用户.通常的方法是发送带有链接的电子邮件.用户必须单击该链接才能激活该帐户.

例如,链接可能如下所示:

http://example.com/activate?token=bc59fb46c9a0a25346889e5ab336f11c

其中token是您生成并存储在数据库中的随机字符串,链接到该帐户.activate然后页面后面的服务器端代码将激活该帐户.如果您token在一周之内没有获得此命中,则可以清理帐户和激活令牌.


添加回复您的评论...

另一种方法是启动SMTP连接,并尝试开始发送电子邮件.这类似于邮件服务器之间的回调验证.例如(<邮件服务器说的>是您的脚本可能发送的内容):

< 220 example.com ESMTP Postfix
> EHLO foobar.com
< 250 OK
> MAIL FROM: noreply@foobar.com
< 250 OK
> RCPT TO: johndoe@example.com
< 550 Recipient address rejected: User unknown in local recipient table
> QUIT
< 221 Bye

这种方法存在几个严重的问题,这就是为什么它没有在实践中使用.其中大多数会导致错误接受的消息,有些会导致检查完全失败:

如果您的站点位于禁止端口25(SMTP)和445(SSMTP)上的传出连接的防火墙后面,则甚至无法连接到远程服务器.

此技术不会告诉您地址是否输入错误,但会导致另一个有效地址.例如,at hotmail.com,几乎任何你能想象的地址都将被采用.

如果邮件服务器已关闭或无法访问,则帐户创建将失败.

如果邮件服务器配置为接收无效地址的邮件,则将接受任何地址.

如果邮件服务器不是最终收件人,而只是中继主机,则将接受任何地址.

如果过于频繁地探测邮件服务器,则可能会将您列入黑名单.

您的站点可能被恶意的人或机器人滥用以锤击邮件服务器.(当您发送完整的验证电子邮件时也是如此.在这两种情况下都使用验证码.)

另请参阅Postfix手册和维基百科上有争议的部分.我希望这份清单足以说服你的客户说他的问题没有很好的解决办法,并且他应该停止向你提出不可能的问题.


你需要做什么,否则用户可以提交真正的电子邮件地址......属于其他人.
推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有