可能重复:
Is there a php library for email address validation?
How to check if an email address exists without sending an email?
大家好,
如何像yahoo一样验证电子邮件提供商的电子邮件地址?
情形:
asdfasdf@yahoo.com
如何向yahoo.com验证上述电子邮件是否有效?
先谢谢。
---- PHP规则----
答案 0 :(得分:4)
验证电子邮件的唯一方法是实际尝试向该地址发送电子邮件,但大多数情况下正则表达式都可以解决问题。
要使问题复杂化,您可能只需要像这样的简单验证
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$
或者像这样的更复杂的
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b
有一篇关于电子邮件验证的非常好的文章here
答案 1 :(得分:4)
我希望以下文档有所帮助:
答案 2 :(得分:3)
您可以向该地址发送电子邮件,并让用户通过点击链接进行验证。
答案 3 :(得分:2)
与服务器建立SMTP连接,并执行“发件人验证”查找:
telnet <Yahoo MX> 25
helo here.com
mail from: here@there.com
rcpt to: asdfasdf@yahoo.com
data
您将获得继续传输的代码,或者获得收件人无效的消息。
答案 4 :(得分:1)
查找该电子邮件地址的MX记录。
答案 5 :(得分:1)
以下正则表达式匹配电子邮件地址:
^([\w-\.]+)@((\[[0–9]{1,3}\.[0–9]{1,3}\.[0–9]{1,3}\.)|(([\w-]+\.)+))
([a-zA-Z]{2,4}|[0–9]{1,3})(\]?)$
rashmipandit@gmail.com - 有效
rashmi.pandit@gmail.com - 有效
rashmi_pandit@gmail.com - 有效
rashmi.pandit@gmail - 无效
rashmi + pandit@gmail.com - 无效
如果您希望根据RFC指南更复杂,可以使用以下内容:
^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$
答案 6 :(得分:0)
通过SOAP调用,GET或POST使用此免费Web服务。您需要做的只是为它提供一个电子邮件地址,它将返回一个布尔值,表示它是否是一个实际的,可交付的电子邮件地址:
http://www.webservicex.net/ValidateEmail.asmx?op=IsValidEmail
答案 7 :(得分:0)
有许多垃圾邮件/垃圾邮件(www.spam.la)允许您接收任何地址的邮件。因此,我建议不要依赖通常意义上的“有效”电子邮件。也许OpenID是一种选择?只需检查“有效”格式,您就可以使用filter_var()/FILTER_VALIDATE_EMAIL等现有功能。
答案 8 :(得分:0)
上述大部分答案都是关于电子邮件地址的正则表达式检查。要实际查看电子邮件地址是否有效,您需要连接到SMTP服务器并发送命令。 All details and PHP code is available here。
如果您发送大量请求,雅虎服务器可能会阻止您使用。此外,强烈建议将其与其他人描述的正则表达式一起使用。