Example of whether PHP accurately verifies the existence of email addresses

Source: Internet
Author: User
Tags mx record

Background

PHP Check the mailbox address of a lot of more commonly used to write their own regular, but is a lot of trouble, I have the method of PHP with a check.

Filter_var

Filter_var is a built-in variable filtering method in PHP that provides a number of useful filters that can be used to validate integers, floating-point numbers, mailboxes, URLs, MAC addresses, and so on.

Specific filter Reference: Filters.validate

Filter_var returns FALSE, indicating that the variable cannot pass through the filter, which is illegal.

$email = "lastchiliarch@163.com";

Var_dump (Filter_var ($email, Filter_validate_email));


$email = "ASB";
Var_dump (Filter_var ($email, Filter_validate_email));

$email = "1@a.com";
Var_dump (Filter_var ($email, Filter_validate_email));

Output:


String (lastchiliarch@163.com)
BOOL (FALSE)
String (7) "1@a.com"

For ASB This illegal mailbox format returned false, but for 1@a.com passed, or slightly flawed ah.

But the general is also through will think 1@a.com is a legitimate mailbox, then what method can more accurate verification?

Checkdnsrr

CHECKDNSRR is actually used to query DNS records for the specified host, which we can use to verify that the mailbox exists.

The MX record is certainly not present for 1@a.com.

$email = "lastchiliarch@163.com";
Var_dump (CHECKDNSRR (Array_pop ("@", $email)), "MX");
$email = "1@a.com";
Var_dump (CHECKDNSRR (Array_pop ("@", $email)), "MX");

Output:
BOOL (TRUE)
BOOL (FALSE)

Can see, very perfect, the only drawback is too slow, after all, to do a network request. So it is not appropriate to sync to a large number of mailboxes using this approach to verify.

Filter_var+checkdnsrr

We can engage Filter_var and CHECKDNSRR to do the check, for the vast majority of illegal mailboxes will certainly be in Filter_var when the hang off, the rest of the reuse

CHECKDNSRR further judgment.

$email _arr = Array ("lastchiliarch@163.com", "1@a.com");
foreach ($email _arr as $email) {
if (Filter_var ($email, filter_validate_email) = = False) {
echo "Invalid email: $email \ n";
Continue
}

if (CHECKDNSRR (Array_pop (Explode ("@", $email)), "MX") = = False) {
echo "Invalid email: $email \ n";
Continue
}
}

Output: Invalid email:1@a.com

Note, however, that because only the MX record is checked, only 163.com can be judged to exist, but it cannot be explained that lastchiliarch this user is present.

To more accurately determine the existence of a mailbox, it can only be connected to the SMTP server to authenticate.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.