Отправлять почту и проверять фактическое письмо? - PullRequest
1 голос
/ 19 декабря 2011

Я отправляю пользователям ссылку активации через php, у меня есть только регулярное выражение, чтобы проверить, состоит ли электронная почта из *@*.*, что хорошо, но я хотел бы проверить, отправляет ли электронная почта также.

Я пытался сделать это с

if (mail(....)) {
     // success
} else {
     // error
}

Но когда я ввожу электронное письмо a@a.a, оно все равно переходит к этапу успеха.

Как я могу на самом деле проверить, является ли это правильное письмо в php, спасибо.

Ответы [ 3 ]

3 голосов
/ 19 декабря 2011
  1. предварительно подтвердите адрес электронной почты с помощью

     if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
         echo "VALID";
     }
    
  2. , сервер электронной почты вернет true, приняв сообщение, которое он не знает, попадет ли он наДля пользователя единственный способ сделать это, и я уверен, что вы видели это, - заставить получателя нажать на ссылку в электронном письме, которое отправляет его обратно на ваш сайт, и тогда вы узнаете его действительный \ использованный адрес.

2 голосов
/ 19 декабря 2011

Из документации PHP

bool mail (строка $ to, строка $ subject, строка $ message [, строка $ extra_headers [, строка $ extra_parameters]])

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

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

То, что адрес электронной почты отформатирован правильно, не означает, что в этом месте есть реальный почтовый ящик. В PHP нет способа «проверить», существует ли адрес электронной почты / активен ли он. В этом вся цель ссылок активации, чтобы убедиться, что кто-то проверяет этот адрес электронной почты.

0 голосов
/ 20 декабря 2011

+ 1 для filter_var (). Используйте его вместо простого регулярного выражения. Даже самые сложные регулярные выражения не могут получить все возможные способы составления адреса, совместимого с RFC 5322 . Ваша попытка что-то придумать гарантированно провалится.

Но вы не спрашивали о проверке формата адреса, вы спрашивали о проверке, чтобы убедиться, что письмо было отправлено. Целью ссылки активации является проверка адреса электронной почты. Если вы регулярно очищаете непроверенные учетные записи, не имеет значения, правильно ли структурирован адрес электронной почты. Отправляя ссылку, вы проводите полный контур теста, который обходит любые возможные неверные интерпретации формата, которые может иметь filter_var ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...