regex — Как проверить адрес электронной почты по домену с помощью PHP?

Я хочу проверить домен электронной почты, используя php, потому что некоторые пользователи пытаются отправить контактную форму, используя фиктивные идентификаторы электронной почты, такие как: aa@bb.com

-2

Решение

ПОПРОБУЙТЕ с checkdnsrr Извлеките доменное имя из адреса электронной почты и перейдите к checkdnsrr.

Возвращает TRUE, если доменное имя найдено; возвращает FALSE, если доменное имя отсутствует
были найдены или если произошла ошибка.

$domainname = "domain.com";

checkdnsrr($domainname , "A");
1

Другие решения

Если вы хотите только проверить синтаксис раздела доменного имени, вы можете разделить письмо на @ и запустить это регулярное выражение во второй части (после запуска его через idn_to_ascii() функция для международных доменных имен):

/
^
(?(DEFINE)(?<part>(?:xn--)?[a-z\d](?:[a-z\d-]*[a-z\d])?))
(?(DEFINE)(?<subpart>(?:xn--)?[a-z\d_](?:[a-z\d_-]*[a-z\d])?))
(?:(?&subpart)\.)*
(?&part)
(?:\.[a-z]+|\.xn--[a-z\d]+){1,2}
$
/xigm

https://regex101.com/library/PAKVdK

0

Вам нужно будет проверить, есть ли запись MX для этого домена.

Рассмотрите этот сценарий в дополнение к проверке регулярных выражений

https://davidwalsh.name/php-email-validator

Имейте в виду, что это не будет «действительно» проверять электронную почту полностью. Пользователь может быть недействительным.

0

Если вы не хотите проходить через все трудности, связанные с выполнением валидации самостоятельно, просто используйте бесплатный план API от MailboxValidator.

У них есть несколько примеров кодов, которые помогут вам с интеграцией.

http://www.mailboxvalidator.com/api-single-validation

<?php
$apiKey = 'Enter_License_Key';
$params['format']           = 'json';
$params['email']     = 'Enter_Email';

$query = '';

foreach($params as $key=>$value){
$query .= '&' . $key . '=' . rawurlencode($value);
}

$try = 0;
do {
////////////
//For https request, please make sure you have enabled php_openssl.dll extension.
//
//How to enable https
//- Uncomment ;extension=php_openssl.dll by removing the semicolon in your php.ini, and restart the apache.
//
//In case you have difficulty to modify the php.ini, you can always make the http request instead of https.
////////////
$result = file_get_contents('https://api.mailboxvalidator.com/v1/validation/single?key=' . $apiKey . $query);
} while(!$result && $rty++ < 3);

$data = json_decode($result);

print_r($data);
?>
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector