如何实施以下逻辑?
用户使用电子邮件地址注册
如果提供的电子邮件地址有效 电子邮件地址然后用户帐户获取 激活
或者如果它是假电子邮件,那么用户 帐户未激活
我怀疑我能抓到 - “发送失败的回复消息”,对吧? 无论如何你会建议实施上述逻辑?
PS。无论怎样,我都必须找到一种方法,客户想要它=)
答案 0 :(得分:10)
您可能不仅要确保电子邮件地址有效,还要确保它属于此特定用户。通常的方法是发送带有链接的电子邮件。用户必须单击该链接才能激活该帐户。
例如,链接可能如下所示:
http://example.com/activate?token=bc59fb46c9a0a25346889e5ab336f11c
其中token
是您生成并存储在数据库中的随机字符串,链接到该帐户。然后,activate
页面后面的服务器端代码将激活该帐户。如果您在一周之内没有获得此token
的匹配,则可以清理帐户和激活令牌。
在回复您的评论时添加...
另一种方法是启动SMTP连接,并尝试开始发送电子邮件。这与邮件服务器中的callback verification类似。例如(<
是邮件服务器所说的,>
是您的脚本可能发送的内容:
< 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
这种方法有几个严重的问题,这就是为什么它没有在实践中使用。其中大部分都会导致错误接受的消息,有些会导致检查完全失败:
hotmail.com
,您可以想象的任何地址都将被采用。另请参阅the Postfix manual和a disputed section on Wikipedia。我希望这份清单足够长,足以说服你的客户说他的问题没有很好的解决办法,他应该停止向你提出不可能的事情。
答案 1 :(得分:1)
为什么不实施验证系统。他们创建了一个帐户。向他们发送一封带有验证码的电子邮件。他们单击电子邮件中的链接,然后运行该数据库并激活该特定验证ID。
许多网站都使用这种技术,它有助于保持某种控制。
希望这有帮助
答案 2 :(得分:1)
您还可以使用PHP函数checkdnsrr($ hostname)。例如:
if (checkdnsrr("comcast.net"))
{
echo 'Email valid!'
return true;
}
else
{
echo 'Email invalid!';
return false;
}
这将返回true并回显“电子邮件有效!”因为comcast.net是一个有效的ISP。此功能至少会阻止您的用户输入“johndoe@foobar.com”。
答案 3 :(得分:0)
这是一项将验证电子邮件地址的服务,不确定这是否是您感兴趣的预期路线。 Service
答案 4 :(得分:0)
查看 Regular Expressions ,这是一种可以验证电子邮件格式的方式,以确保它是有效的电子邮件结构(即包含“@”,具有顶级域名,域名等。)
这只会确保电子邮件有效,但像fakeMan@FakeLand.com这样的假邮件仍会通过。为确保电子邮件真实,您需要通过邮件服务器发送电子邮件,并检查是否有退回。这个过程可能需要一段时间,因为你必须等待电子邮件服务器以反弹回应,这很难预测需要多长时间。如果您希望用户等待几天,那就没关系。
标准是使用正则表达式验证电子邮件以确保它是正确的格式。然后你要做的是将验证密钥发送到用户的电子邮件。他们需要有效的电子邮件才能获得密钥,以完成注册过程。
当然,仍然有用户使用临时电子邮件注册网站。这是一个存在24小时左右的电子邮件,足以让他们获得验证密钥......没有真正的方法来绕过这样做的用户,除了将所有这些服务列入黑名单(并且还有很多。)< / p>
答案 5 :(得分:0)
这是真正的电子邮件语法正则表达式:http://ex-parrot.com/~pdw/Mail-RFC822-Address.html
你知道,这不是一项微不足道的工作。