我想在注册前检查输入的电子邮件地址,我在SF找到了一些解决方案,但这些解决方案说我们应该检查MX
或SMTP
端口,但我们有一些假的电子邮件,如:
111111@gmail.com
some.email.address@gmail.com
and ...
当我检查gmail.com
域名时,此域名有MX
个记录,并且没有问题,但这封电子邮件是假的!
有没有办法用php ping电子邮件地址?
答案 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'; }