CNode

如何快速鉴别邮箱是否存在(可用)

问答
Ddoramart发布于11 年前最后回复11 年前8 回复11671 浏览0 收藏

如题,即验证邮箱的真实性

查看回复

回复 (8)

F
fundon#1·11 年前

第一,发一封邮件,明显是不靠谱的方式。

那么倒是可以去检查邮箱域名的 mx txt cname 等记录。

以下是 Mac OSX 下的测试

$ dig mx gmail.com
$ dig txt gmail.com
$ nslookup -query=mx github.com
...

但上面也只是从侧面检查该域名是有 mail server

接下来使用 telnet 命令链接 上面的 mx 地址

$ telnet ALT3.ASPMX.L.GOOGLE.com 25
HELO
...

从这方面入手或许对你有帮助。

BTW,还是从业务出发,纯粹为了检查一个地址的有效性,开销有些大。

D
doramart#2·11 年前

感谢,参考一下

B
backsapce#3·11 年前

发邮件成本我个人觉得并不是特别高,而判断一个邮箱是不是有效地址成本很高! 我觉得只要对地址正则验证就好了. RFC822 正则判断.

function isEmail(email){
        return /^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/.test( email );
}
K
klesh#5·11 年前

验证用户邮箱有效性不就是发邮箱验证码吗?

来自酷炫的 CNodeMD

L
leapon#6·11 年前

同意楼上 等有个正反馈才能确认

D
doramart#7·11 年前
引用 klesh验证用户邮箱有效性不就是发邮箱验证码吗? 来自酷炫的 CNodeMD

@klesh 其实是想校验邮箱是不是乱写的,如果用户乱写,发送验证码也没有意义,更不用说激活了,我用了个折中的方法来处理:

DoraCMS email校验问题

X
XadillaX#8·11 年前

验证用户邮箱有效性不就是发邮箱验证码吗?

参与回复
登录后即可参与回复。登录