Java, отправить по электронной почте: проверьте, указан ли действительный хост в адресе электронной почты

Наш веб-сайт отправляет электронные письма на адрес электронной почты, который пользователь вводит на нашем веб-сайте. Некоторые люди вводят мусорные адреса электронной почты. Как мы можем узнать, является ли хотя бы хост введенного адреса действительным? Просто пытаетесь открыть сокет на порту 25 введенного хоста?

Обновление: я нашел библиотеку Java для работы с DNS. Какую запись я должен проверить?


person Mot    schedule 17.08.2010    source источник
comment
Я задал аналогичный вопрос по этому поводу для php. Лучше всего было бы сделать проверку DNS на имя хоста.   -  person Albinoswordfish    schedule 17.08.2010


Ответы (2)


Вам нужно найти запись MX для хост-части из DNS... но есть много угловых случаев. Не изобретайте велосипед (вы обязательно ошибетесь), попробуйте найти существующую библиотеку. Я знаю только один от Snertsoft для C (интегрированный в коммерческий milter-sender ), хотя.

[Отказ от ответственности: я счастливый пользователь milter-sender]

[Изменить] Ознакомьтесь с RFC 5321. Раздел 5, в котором описаны правила поиска нужного хоста.

person Volker Stolz    schedule 17.08.2010

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

person Bernard    schedule 17.08.2010
comment
Вот такая куча червей... regular-expressions.info/email.html Почему бы просто не сделать адрес электронной почты необязательным, если пользователи не хотят его указывать, им это не нужно, а если они хотят его предоставить, им нужно ввести его дважды и проверить совпадение обоих значений. - person Jon Freedman; 17.08.2010
comment
Извините, это не то, чего я хочу. Я хочу предотвратить что-то вроде [email protected]. - person Mot; 17.08.2010