javax.mail.SendFailedException: Invalid Addresses; nested exception is: class com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 <idtong@nate.com>... Relaying denied [MSG] Invalid Addresses; nested exception is: class com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 <idtong@nate.com>... Relaying denied
|
체크리스트 1
props.put("mail.smtp.host", "netian.com");
이 정보가 정확한지 확인해보세요..
만약 outlook 으로 위 smtp 서버를 통하여 메일이 전송된다면 저랑은 다른 문제일 것같군요..
telnet smtpaddress smtp 하면 해당 smtp 서버에 접근이 가능한지 그리고 활성화 중인지 확인이 가능합니다.
체크리스트 2
SMTP서버에서 릴레이를 거부한겁니다.
SMTP서버에 릴레이 허용 IP에 글쓴분 IP가 등록이 되어있어야 됩니다.
IIS가 설치된 컴퓨터가 있으면 SMTP서비스를 설치해서 SMTP서비스 등록정보에
들어가 보시면 좀 더 이해가 쉽게 될 것 같습니다.
항목중에 릴레이 라는게 있는데 거기서 특정 IP에서 들어오는 요청만 처리하게 하는
메뉴가 있습니다.
SMTP서버 지정해 주는 부분을 한번 확인해 보세요.
체크리스트 3
javax.mail.SendFailedException: Invalid Addresses;
익셉션은
웹메일에서 dns 에 등록되지 않은 서버에 메일을 보낼수 없게 막아놓습니다.
그래서 익셉션이 나는 도메인은 고정되어있을겁니다.
익셉션이 나는 곳에 catch 하는 부분에서 아래의 코드를 넣어보세요..
catch (MessagingException me) {
me.printStackTrace();
Exception ex = me;
do {
if (ex instanceof SendFailedException) {
SendFailedException sfex = (SendFailedException)ex;
Address[] invalid = sfex.getInvalidAddresses();
if (invalid != null) {
System.out.println(" ** Invalid Addresses");
if (invalid != null) {
for (int i = 0; i < invalid.length; i++)
System.out.println(" " + invalid[i]);
}
}
그리고 위에서 캐취된 도메인중 사용가능한 도메인으로 하기 위해서는 서버 관리자에서 도메인을 등록해돌라고 합니다..
서버 관리자가 없으면 .. 찾아서 해야할듯하고요..
수고하세요.