Разрешение фактического адреса электронной почты в SMTP - PullRequest
0 голосов
/ 15 октября 2011

У меня есть настройка сокета в Java, и пользователь может ввести свой идентификатор пользователя и пароль для входа на SMTP-сервер почты.При отправке электронного письма мне нужно знать адрес электронной почты пользователя на сервере, чтобы я мог поместить его в заголовок From: электронного письма.Но иногда идентификатор пользователя может не совпадать с адресом его электронной почты.Например, идентификатор пользователя может быть abc_john, а имя хоста может быть smtp.smith.com, но фактический адрес электронной почты может быть john@mail.smith.com.Что-то вроде того.Это имя пользователя не означает его фактический адрес электронной почты.

Есть ли способ определить его фактический адрес электронной почты в Java?Я подключаюсь к SMTP-серверу, используя Socket, , а не JavaMail API.Я надеюсь, что может быть команда SMTP, которая может вернуть фактический адрес электронной почты.

Ответы [ 2 ]

2 голосов
/ 15 октября 2011

Отправьте SMTP-серверу команду VRFY, указав имя пользователя в качестве параметра. Если сервер поддерживает VRFY (это необязательная, но рекомендуемая команда), ответ должен содержать полный адрес электронной почты почтового ящика пользователя. Подробнее см. RFC 2821 .

0 голосов
/ 15 октября 2011

Нет, вы не можете получить что-либо на основе имени пользователя и используемого SMTP-сервера.Один SMTP-сервер может служить в качестве MX для множества доменов (например, моя компания использует gmail в качестве своего почтового провайдера, но наш адрес электронной почты просто из нашего корпоративного домена).И в прошлом (до появления спама) вы могли использовать - по крайней мере теоретически - любой SMTP-сервер для отправки почты на любой адрес электронной почты.

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

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