2014-09-10 5 views
0

나는 공유 된 편지함의받은 편지함을 읽을 수있는 몇 가지 코드를 조합하려고 시도 해왔다. Javamail 포트 번호 변경

가이 코드

try { 
     // create properties field 
     Properties properties = new Properties(); 

     properties.put("mail.pop3.host", host); 
     properties.put("mail.pop3.port", "110"); 
     Session emailSession = Session.getInstance(properties, null); 
     emailSession.setDebug(true); 

     // create the POP3 store object and connect with the pop server 
     Store store = emailSession.getStore("pop3s"); 

     store.connect(host, username, password); 

     // create the folder object and open it 
     Folder emailFolder = store.getFolder("INBOX"); 
     emailFolder.open(Folder.READ_ONLY); 

     // retrieve the messages from the folder in an array and print it 
     Message[] messages = emailFolder.getMessages(); 
     System.out.println("messages.length---" + messages.length); 

     for (int i = 0, n = messages.length; i < n; i++) { 
      Message message = messages[i]; 
      System.out.println("---------------------------------"); 
      System.out.println("Email Number " + (i + 1)); 
      System.out.println("Subject: " + message.getSubject()); 
      System.out.println("From: " + message.getFrom()[0]); 
      System.out.println("Text: " + message.getContent().toString()); 

     } 

     // close the store and folder objects 
     emailFolder.close(false); 
     store.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
을 찾을 수 있었다

나에게 문제의 원인이되는 점은 I 포트 (110)를 지정한 경우에도이 995 여기

로 변경하는 것은에서 디버깅입니다 유지한다는 것입니다 내가

DEBUG: setDebug: JavaMail version 1.5.2 
DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle] 
DEBUG POP3: mail.pop3s.rsetbeforequit: false 
DEBUG POP3: mail.pop3s.disabletop: false 
DEBUG POP3: mail.pop3s.forgettopheaders: false 
DEBUG POP3: mail.pop3s.cachewriteto: false 
DEBUG POP3: mail.pop3s.filecache.enable: false 
DEBUG POP3: mail.pop3s.keepmessagecontent: false 
DEBUG POP3: mail.pop3s.starttls.enable: false 
DEBUG POP3: mail.pop3s.starttls.required: false 
DEBUG POP3: mail.pop3s.apop.enable: false 
DEBUG POP3: mail.pop3s.disablecapa: false 
DEBUG POP3: connecting to host "removed", port 995, isSSL true 

이 후 나는 다음과 같은 오류를 얻을 수 JavaMail에

com.sun.mail.util.MailConnectException: Couldn't connect to host, port: removed, 995; timeout -1; 

여러 게시물을 살펴 보았지만 아무도이 문제를 해결하지 못했고 API에서이 문제를 찾을 수 없습니다.

+0

'mail.pop3.port'의 형식은'int'입니다. 따라서 다음과 같습니다 :'properties.put ("mail.pop3.port", 110);'참조 : http://connector.sourceforge.net/doc-files /Properties.html –

+0

포트 값을 변경하지 않고 여전히 기본값 인 995로 다시 채웠습니다. – theNewb

답변

1

당신은 그것을위한 포트를 설정하지 않고 pop3s을 지정, 그래서 995의 기본 here를 참조 사용 :

mail.pop3.ssl.enable boolean  If set to true, use SSL to connect and use the SSL port by default. Defaults to false for the "pop3" protocol and true for the "pop3s" protocol. 

나는 방법이 아닌 기본을 지정하는 방법을 알려 @BillShannon에 떠날거야 pop3s 포트.

아니면 실제로 pop3을 사용하려고하셨습니까?

+0

thankyou – theNewb

+0

내가 인용 한 테이블 바로 위에 놓친 부분과 @BillShannon에 연기 한 이유는 거기에있는 설명입니다. 'pop3s.'에 대한 또 다른 mail.pop3s. * 속성 집합입니다. – EJP

0

표준 pop3 포트 인 포트 110을 사용하려면 "pop3"프로토콜 대신 "pop3s"(SSL을 통한 pop3) 프로토콜을 사용하는 이유는 무엇입니까?

표준 포트를 사용하려면 JavaMail이 표준 포트를 사용하는 대신에 왜 표준 포트를 지정해야합니까?

pop3s 프로토콜을 실제로 사용하려는 경우 pop3 프로토콜의 속성을 설정해도 아무런 효과가 없습니다. "mail.pop3s. *"속성을 설정하려고합니다.