2013-04-27 4 views
0

JavaMail API를 통해 전자 메일을 보내려고하지만 SocketException : Connection reset을 수신하게됩니다.JavaMail SocketException : 연결 재설정

import java.util.Properties; 
import javax.mail.*; 
import javax.mail.internet.*; 

public class SendMailSSL { 
public static void main(String[] args) { 

Properties props = new Properties(); 
    props.put("mail.smtp.host", "smtp.gmail.com"); 
    props.put("mail.smtp.socketFactory.port", "465"); 
    props.put("mail.smtp.socketFactory.class", 
    "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.port", "465"); 

    Authenticator auth = new Authenticator() { 

      @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication("[email protected]","gmailPassword"); 
      } 
     }; 

    Session session = Session.getDefaultInstance(props,auth); 


    try { 

    Message message = new MimeMessage(session); 
    Address sender = new InternetAddress("[email protected]"); 
    message.setFrom(sender); 

    String recipients = "[email protected],[email protected],[email protected]"; 
    String[] toList = recipients.split(","); 
    System.out.println(toList.length); 
    Address[] addressTo = new InternetAddress[toList.length]; 

    for(int i = 0; i < toList.length; i++){ 
    addressTo[i] = new InternetAddress(toList[i]); 
    } 

    for(int i=0; i < addressTo.length; i++) { // changed from a while loop 
      message.addRecipient(Message.RecipientType.TO, addressTo[i]); 
     } 


    message.setSubject("Testing Subject 5"); 
    message.setText("Dear Message ," + 
    "\n\n HELLO, please! \n https://192.168.192.120:8181/centralWeb"); 
    System.out.println("SENDING MAIL......... " + new Date().toString()); 

    message.setHeader("Content-type", "text/html; charset=UTF-8"); 
    Transport.send(message); 

    System.out.println("Done " + new Date().toString()); 

    } catch (MessagingException e) { 
    throw new RuntimeException(e); 
    } 

} 
} 

넷빈즈 출력 :

1 
SENDING MAIL......... Sun Apr 28 01:30:18 IST 2013 
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465; 
    nested exception is: 
    java.net.SocketException: Connection reset 
    at sendmailssl.SendMailSSL.main(SendMailSSL.java:65) 
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465; 
    nested exception is: 
    java.net.SocketException: Connection reset 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525) 
    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 sendmailssl.SendMailSSL.main(SendMailSSL.java:60) 
Caused by: java.net.SocketException: Connection reset 
    at java.net.SocketInputStream.read(SocketInputStream.java:189) 
    at java.net.SocketInputStream.read(SocketInputStream.java:121) 
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:312) 
    at sun.security.ssl.InputRecord.read(InputRecord.java:350) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) 
    at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:503) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:234) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672) 
    ... 7 more 
Java Result: 1 
BUILD SUCCESSFUL (total time: 2 seconds) 

나는 IPv6을 사용하지 않도록 너무 내 방화벽을 해제하려고했지만, 문제가 지속. 그게 중요한 일이라면 Windows 7 x64를 사용하고 있습니다.

이 문제를 해결할 수있는 분들께 감사드립니다. 나는 그들이 관련 생각하지 않지만,

, 당신이 common mistakes를 해결 할 수 있습니다 :

+0

'Transport.send (..)'의심스러운 것으로 보입니다. 어디에서 코드에 서버에 연결 했습니까? http://stackoverflow.com/a/1990581/336802 – chr

+0

@chr 코드를 참조하십시오. 놀랍게도 코드는 어떤 이유로 작동합니다. (그것은 소켓 예외를 일으키는 내 바이러스 백신에서 바보 같은 smtp 나가는 필터). 지적 해 주셔서 감사합니다. 지적한 코드를 추가하겠습니다. – user2327683

답변

1

는 JavaMail에 대한 FAQ에서 이러한 디버깅 팁을보십시오 너의 문제에.

+1

사실 내 링크에서 언급 한 실수 중 일부가 있습니다. 고맙습니다. 제 코드를 수정 해 드리겠습니다. 나는 그런 식으로 작업을했습니다. 연결을 차단하고있는 것은 내 바이러스 백신에서 보내는 SMTP 필터입니다. – user2327683

+0

ANTIVIRUS도 저에게 문제가되었습니다 ...! – HaveAGuess