2011-10-15 2 views
0

Java에서 소켓 설정이되어 있으며 사용자는 사용자의 ID와 비밀번호를 입력하여 메일의 SMTP 서버에 로그인 할 수 있습니다. 전자 메일을 보낼 때 전자 메일의 From: 헤더에 넣을 수 있도록 서버에서 사용자의 전자 메일 주소를 알아야합니다. 그러나 때로는 사용자의 ID가 이메일의 주소와 정확히 일치하지 않을 수도 있습니다. 예를 들어 사용자 ID는 abc_john이고 호스트 이름은 smtp.smith.com 일 수 있지만 실제 이메일 주소는 [email protected] 일 수 있습니다. 그런 것. 사용자 이름이 실제 전자 메일 주소를 의미하지는 않습니다.SMTP에서 실제 전자 메일 주소 확인

Java에서 실제 이메일 주소를 확인할 방법이 있습니까? 소켓을 사용하여 SMTP 서버에 이 아닌 JavaMail API를 연결하고 있습니다. 실제 전자 메일 주소를 반환 할 수있는 SMTP 명령이있을 수 있으면 좋겠습니다.

답변

2

사용자 이름을 매개 변수로 지정하는 VRFY 명령을 SMTP 서버로 보냅니다. 서버가 VRFY을 지원하면 (옵션이지만 권장되는 명령 임) 응답에는 사용자 사서함의 전체 전자 메일 주소가 포함되어야합니다. 자세한 내용은 RFC 2821을 참조하십시오.

0

아니요 사용자 이름과 사용 된 SMTP 서버에 따라 아무 것도 도출 할 수 없습니다. 단일 SMTP 서버는 여러 도메인의 MX 역할을 할 수 있습니다 (예 : 회사에서 gmail을 메일 공급자로 사용하지만 emailaddress는 Google 도메인에서 온 것임). 과거에는 (스팸이 발생하기 전에) 특정 전자 메일 주소에 대해 메일을 보내는 SMTP 서버를 이론적으로는 사용할 수있었습니다.

간단히 말하면 사용자는 전자 메일 주소 전체를 입력해야합니다.

+0

사용자가 이메일 주소로 원하는 주소를 입력 할 수 있다면 스팸과 부과를 용이하게하지 않겠습니까? 마치 다른 사람처럼 부과 할 수있는 것처럼. 물론, 메일의 헤더는 그의 신원을 드러내지 만 모든 사람이 항상 헤더를 읽지는 않습니다. – Carven

+0

메일 서버의 정확한 구성에 따라 다릅니다. 메일 서버는 일반적으로 전자 메일 주소를 특정 사용자에 대해 허용하도록 구성된 경우를 제외하고는 전자 메일 주소가 아닌 전자 메일 주소를 보낸 사람으로 허용하지 않습니다. –

관련 문제