检查电子邮件是否存在

时间:2014-03-23 11:17:42

标签: php email ping

我想在注册前检查输入的电子邮件地址,我在SF找到了一些解决方案,但这些解决方案说我们应该检查MXSMTP端口,但我们有一些假的电子邮件,如:

111111@gmail.com
some.email.address@gmail.com
and ...

当我检查gmail.com域名时,此域名有MX个记录,并且没有问题,但这封电子邮件是假的!

有没有办法用php ping电子邮件地址?

4 个答案:

答案 0 :(得分:3)

您唯一能做的就是发送确认电子邮件,并要求用户点击链接或提供您在此电子邮件中发送的代码。

答案 1 :(得分:3)

您可以在不发送邮件的情况下检查是否存在。

获得MX记录后,您可以使用SMTP协议直接与服务器通信。

例如:(以>开头的行表示输入。)

> telnet gmail-smtp-in.l.google.com 25
Trying 74.125.129.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP pa10si7038694pbc.108 - gsmtp

> HELO
250 mx.google.com at your service

> MAIL FROM: <test@test.com>
250 2.1.0 OK rw3si4189390pab.9 - gsmtp

> RCPT TO: <notexists___@gmail.com>
550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 rw3si4189390pab.9 - gsmtp

如果您将notexists___@gmail.com替换为111111@gmail.com

> RCPT TO: <111111@gmail.com>
250 2.1.5 OK il2si7046221pbc.91 - gsmtp

在PHP中,您可以使用套接字函数来执行上述操作。

注意:此方法可能无法在某些SMTP服务器上运行。

答案 2 :(得分:2)

我知道检查电子邮件地址的唯一方法是向他们发送电子邮件。

为什么需要先检查电子邮件地址?您可以向他们发送一个&#34;激活链接&#34;什么也不仅证明了存在,而且也证明了地址背后的人。

答案 3 :(得分:2)

您可以发送确认邮件,以便您知道该地址有效。如果这不是一个选项,您可以检查域实际存在。这样你就忽略了something@non_existing_domain.com

// or use ANY or for other see above link
if (checkdnsrr('non_existing_domain.com', 'A')){ echo 'Domain exists'; }
else { echo 'Domain does not exist'; }