2010-03-01 3 views
7

Когда люди регистрируются на моем сайте, я не хочу отправлять им электронное письмо с проверкой, я просто хочу проверить, существует ли это письмо. есть ли способ сделать такое?java: как я могу проверить адрес электронной почты, чтобы он был действительным, не отправляя подтверждение по электронной почте?

Использование apache-tomcat и java в качестве основного языка программирования.

спасибо большое!

+1

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

ответ

9

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

+0

Это не правильный ответ 100% –

+1

@fuzzy: Там также нет 100% надежного способа, которым адрес электронной почты принадлежит данному пользователю, и это никогда не наступит. Я проверил сайт в вашем ответе, ввел несколько адресов, которые, как я знаю, они существуют, и некоторые из них потерпели неудачу, потому что сервер не поддерживает VRFY. Я бы не тратил много времени на проверку адреса электронной почты в другом месте в сети. Просто отправьте письмо с подтверждением и дождитесь подтверждения :) – BalusC

+0

вы можете подключить отправку сообщения RCPT, а затем RSET, вы не посмотрели, что на самом деле делает мое решение. –

15

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

+1

Более конкретно: «... имеет запись ** MX ** в DNS ...» – Dolph

+2

Я не согласен. Вы можете доставить электронную почту в домен без записи MX. – bmargulies

+0

Как бы вы это сделали? –

1

Если вы просто хотите проверить, что он СМОТРЕТСЯ, как действительный адрес электронной почты, есть много примеров Regex, которые подтвердят это. Если вы хотите проверить, что пользователь имеет контроль над адресом электронной почты, вам нужно что-то отправить ему и создать уникальный ответ, чтобы проверить его.

3

Это ответ уже на предыдущие вопросы. Без электронного письма с проверкой, лучше всего вы можете посмотреть адрес электронной почты и посмотреть, действительно ли он действителен. Вы также можете проверить такие вещи, как домен, посмотреть, существует ли он, и иметь записи MX. Во всяком случае, см https://stackoverflow.com/questions/3232/how-far-should-one-take-e-mail-address-validation и Using a regular expression to validate an email address

5

напротив некоторых из необразованных ответов, которые вы можете попробовать и подключиться к серверу MX и использовать команду VRFY для см., поддерживает ли сервер. Вот website, который сделает это для вас в качестве примера. Если вы посмотрите на его обмен с сервером MX, он действительно пытается отправить электронное письмо, но выполняет СБРОС, прежде чем отправлять его. Тестирование его с моим адресом электронной почты работает, но я не получаю письмо. Итак, да, вы МОЖЕТЕ делать то, что говорят все остальные, чего вы не можете сделать. Используйте адрес, который, как вам известно, работает для вашего домена, а затем используйте тот, который вы не поддерживаете. Вы получите команду 550 по последней команде RCTP TO. Так вы знаете, что этого не существует.

6

Я просто хотел взвесить и сказать, что, несмотря на ваше нежелание сделать это, ПОЖАЛУЙСТА, отправьте электронное письмо и попросите пользователя подтвердить, что они контролируют его, прежде чем разрешить использовать этот адрес электронной почты в связи с учетной записью на твой сайт. Зачем? Потому что не делать этого по какой-либо причине означает, что пользователи могут зарегистрироваться для учетных записей с использованием адресов электронной почты, которые не являются их. Они могут сделать это случайно, или они могут сделать это очень целенаправленно (например, подписывать других для счетов по каким-либо причинам); это просто не кошерно, и веб-сайты, которые позволяют это, открыты для сообщения их интернет-провайдерам.

(Я говорю это как владелец учетной записи Gmail, которая, по крайней мере, два-три раза в месяц, зарегистрирована для учетной записи на каком-либо веб-сайте, которая не заставляет пользователей подтверждать свои адреса электронной почты таким образом. Это раздражает, и он ставит бремя на me, чтобы удалить аккаунт с сайта-нарушителя. Теперь я решил восстановить все пароли, которые я могу, войдя в учетную запись, а затем изменив адрес электронной почты на «SOMEDUMBFUCKDOESNTKNOWHISOWNEMAILADDRESS @ gmail .com "или что-то в этом роде ... это весело, но я сомневаюсь, что вы хотите, чтобы это произошло на вашем сайте.)

+4

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

+0

спасибо за информацию ребята :) – ufk

1

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

http://openid.net/

0

Email Verification services очень полезны при проверке адреса электронной почты. Большинство из них выполняют 6 уровней проверки, таких как проверка синтаксиса, проверка записи в MX-запись домена, определение учетной записи на основе ролей, обнаружение одноразового адреса электронной почты (DEA), обнаружение дорожки HoneyPot/Spam и проверка SMTP на глубоком уровне.

Большинство из них предлагает интеграцию API, поэтому вы можете напрямую проверять адреса электронной почты из своего приложения.