2009-07-21 4 views
22
javax.mail.MessagingException: Exception reading response; 
    nested exception is: 
     javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
     at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1764) 
     at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1523) 
     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:453) 
     at javax.mail.Service.connect(Service.java:313) 
     at javax.mail.Service.connect(Service.java:172) 
     at javax.mail.Service.connect(Service.java:121) 
     at javax.mail.Transport.send0(Transport.java:190) 
     at javax.mail.Transport.send(Transport.java:120) 
     at javaapplication5.SendMail.send(SendMail.java:77) 
     at javaapplication5.SendMailTest.main(SendMailTest.java:17) 
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
     at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(InputRecord.java:523) 
     at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:355) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:789) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:744) 
     at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75) 
     at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:106) 
     at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) 
     at java.io.BufferedInputStream.read(BufferedInputStream.java:237) 
     at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:84) 
     at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1742) 
     ... 9 more 

누구든지 JavaMail API를 사용하여 메일을 보낼 수 있습니까?JavaMail을 사용하여 메일을 보낼 때 javax.net.ssl.SSLException

+4

메일을 보내는 데 사용하는 코드를 게시하면 도움이 될 것이라고 생각합니다. D –

+0

이 예외를 throw하는 코드는 무엇입니까? – kgiannakakis

+1

이 Stacktrace를 생성하는 코드는 어떻습니까? –

답변

7

smtp.live.com에서 핫메일 SMTP 서버를 통해 이메일을 보내려고 할 때이 같은 예외를 얻고 있었다 :

Gmail을 통해 메일을 보내려면

은 FAQ를 참조하십시오. 여기에 결국 나를 위해 일한 설정은 다음과 같습니다 이러한 설정은 시도

mail.smtp.starttls.enable=true 
mail.smtp.port=587 
2

하는 SSL을 사용하지 않을 경우, 당신은 대신 SMTPS의 SMTP를 사용하고

안데르센
mail.smtp.starttls.enable=false 
mail.transport.protocol=smtp 
1

SSL 연결 (mail.smtp.ssl.enable=true)을 비 SSL 포트에 연결하면이 오류가 발생합니다.

이 일반적으로 잘못된 포트에 연결하여 발생이 많은 인기있는 메일 서비스는 포트 587 대신 기본 SMTPS 포트 465이 GMail 적용 , Hotmail/Live MailYahoo Mail를 사용합니다.

그러나 Java Mail은 ssl을 false로 설정해도 SSL 사용을 주장합니다.

소스 코드를 추적 한 후 일부 예제 코드에서 복사 한 Session.getDefaultInstance을 사용하고 있습니다. 첫 번째 호출에서 주어진 속성을 가진 세션 만 생성합니다. 서브 시퀀스 호출은 새 세션 대신 이전 세션을 리턴합니다.

Session.getInstance으로 전환하면 내가 전달하는 속성을 사용하는지 확인하고 내 "SSLException : Unrecognized SSL message"를 해결합니다.

관련 문제