Есть ли альтернатива проверке электронной почты?

У меня нет доступа к SMTP-серверу без обновления, чего я не могу сейчас.

Есть ли какой-либо другой метод, который я могу использовать, чтобы убедиться, что пользователи вводят действительные адреса электронной почты в мою базу данных. Я должен использовать бесплатный веб-хостинг (в настоящее время xtreemhost) по крайней мере в течение следующих нескольких недель. Я только что закончил сайт и хочу сначала его протестировать.

Я использую php-mysql для веб-сайта.


person user882440    schedule 13.08.2011    source источник
comment
stackoverflow.com/questions/201323/   -  person André Paramés    schedule 13.08.2011
comment
Ах, у меня был ответ о том, как вы можете отправить электронное письмо со случайным токеном. Но потом я понял, что у вас нет smtp. :(   -  person Amir Raminfar    schedule 13.08.2011
comment
Не забывайте, что даже «действительный адрес электронной почты» может быть отправлен кем-то другим, а не владельцем этого адреса, так что владелец адреса электронной почты будет рассылаться спамом с вашего веб-сайта, что приведет к тому, что ваш веб-сайт будет занесен в черный список. Вы должны найти способ сделать так, чтобы владелец адреса электронной почты действительно хотел быть подписанным на ваш сайт. Навскидку, SMTP - лучший способ.   -  person Jonathan Leffler    schedule 13.08.2011


Ответы (3)


Введение

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

Отвечать

Что касается самой проверки, то есть много способов сделать это,

  • Можно было бы использовать filter_var()

     filter_var('[email protected]', FILTER_VALIDATE_EMAIL)
    

Примечание: REGEX не рекомендуется для проверки электронной почты. Если вы это сделаете, Джон Скит придет к вам ночью.

person Madara's Ghost    schedule 13.08.2011
comment
Я знаю, что вы говорите, поскольку я использую регулярные выражения для проверки, но это все. Я просто хочу понять, что пользователь действительно интересуется сайтом, а не спамером. - person user882440; 13.08.2011
comment
В этом случае, как объясняется во введении, это невозможно. К сожалению ;) - person Madara's Ghost; 13.08.2011
comment
Почему вы сказали, что это подробно обсуждалось? Регулярное выражение не следует использовать в качестве валидатора электронной почты. а затем порекомендовать статью, в которой предлагается регулярное выражение? (И не совсем лучший.) - Вы также понимаете, на чем на самом деле основан FILTER_VALIDATE_EMAIL? - person mario; 13.08.2011
comment
@ yes123 Внимательно прочитайте статью, она не рекомендует использовать REGEX в пользу более сложных способов. - person Madara's Ghost; 13.08.2011
comment
@рикудо? О чем ты говоришь? часть под названием Листинг 2. Лучший пример от ILoveJackDaniel по-прежнему использует ereg - person dynamic; 13.08.2011
comment
Это будет просто регулярное выражение. См. источник. В регулярном выражении около 1000 символов. - person Chronial; 14.08.2011
comment
Но он не будет принимать очень странные, но все еще действительные письма, такие как "Fred Bloggs"@example.com. - person Chronial; 14.08.2011
comment
@Chronial правда, но ни у кого в здравом уме не будет такого электронного письма. - person Madara's Ghost; 14.08.2011

Одна из вещей, которую вы можете сделать, это проверить, действителен ли домен с помощью поиска WHOIS или ping. Если кто-то вводит [email protected], вы пытаетесь найти doe.com в whois и также пропинговать этот домен. Если домен не существует, адрес электронной почты недействителен.

Кроме того, просьба напечатать письмо дважды помогает мне — люди перестают делать орфографические ошибки в своих электронных письмах.

Также обязательна хорошая проверка через регулярное выражение для электронной почты.

person trailmax    schedule 13.08.2011
comment
проверка через регулярное выражение обязательна. - person Madara's Ghost; 13.08.2011
comment
Ну, я не думаю, что в php есть какие-либо встроенные функции, чтобы сделать это возможным, но мне нравится ваша идея. Если бы вы только могли поделиться чем-то о том, как это сделать, это было бы очень полезно. - person user882440; 13.08.2011
comment
Я опубликовал свой ответ. Проверьте это. - person Madara's Ghost; 13.08.2011
comment
@Rikudo Sennin Статья, на которую вы ссылаетесь, в любом случае проверяется на соответствие регулярному выражению. Да и вообще не совсем правильно. - person trailmax; 13.08.2011
comment
@user882440 user882440 Пример пинга php вы можете посмотреть здесь: codediesel. com/php/ping-a-server-using-php Whois немного сложнее, но для php доступно множество библиотек. - person trailmax; 13.08.2011

Вот список, идущий от самого простого к самому точному, который я видел чаще всего.

  • Регулярное выражение — проверьте и убедитесь, что это допустимый формат электронной почты. Я видел несколько хороших фрагментов кода на Stack Overflow для этого — бесплатно и просто, но не определяет, существует ли на самом деле электронная почта или даже домен.

  • Проверьте, есть ли у домена MX-сервер. Более точно, чем регулярное выражение, поскольку, по крайней мере, домен проверяется в режиме реального времени. Это бесплатно и довольно просто реализовать, но не определяет, существует ли пользователь.

  • Используйте коммерческое решение — наиболее точное (подтверждает, что фактический адрес электронной почты действителен и может принимать сообщения), простое в реализации (REST/SOAP), но не бесплатное.

Надеюсь это поможет.

person Justin Helmig    schedule 14.09.2011