1

Google App Engine 프로젝트에서 IMAP을 통해 메일 내용을 가져 오려고 몇 일간 노력하고 있습니다.Google App Engine (GAE) message.getContent()가 javamail 및 IMAP를 사용하지 않음

나는 다른 모든 정보를 추출 할 수 있었지만 오류 메시지 (심지어 message.getContent.tostring()을 호출해도 작동하지 않음)의 내용을 추출하기 위해 MultiPart로 시도했습니다.

일반 프로젝트 (GAE가 아니고 javamail.1.4.7을 사용하는 것)와 동일한 작업을 완벽하게 수행 한 메시지 내용입니다.

import java.util.Properties; 
import java.util.logging.Logger; 
import javax.mail.Session; 
import java.io.IOException; 
import javax.mail.Authenticator; 
import javax.mail.Folder; 
import javax.mail.Message; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Store; 
import javax.servlet.http.*; 

@SuppressWarnings("serial") 
public class nuevo extends HttpServlet { 

    private String User; 
    private String Pass; 

    private static final Logger log = Logger.getLogger(nuevo.class 
      .getName()); 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws IOException { 

     User = "User"; 
     Pass = "Pass"; 

     LlamaIMAP(resp); 

    } 

    public void LlamaIMAP(HttpServletResponse resp) { 

     Properties props = System.getProperties(); 
     props.setProperty("mail.store.protocol", "imaps"); 
     props.put("mail.imap.host", "imap.gmail.com"); 
     props.put("mail.imap.user", User); 
     props.put("mail.imap.socketFactory", 993); 
     props.put("mail.imap.socketFactory.class", 
       "javax.net.ssl.SSLSocketFactory"); 
     props.put("mail.imap.port", 993); 
     Session session = Session.getDefaultInstance(props, 
       new Authenticator() { 
        @Override 
        protected PasswordAuthentication getPasswordAuthentication() { 
         return new PasswordAuthentication(User, Pass); 
        } 
       }); 
     try { 
      Store store = session.getStore("imap"); 
      store.connect("imap.gmail.com", 993, User, Pass); 
      Folder fldr = store.getFolder("Inbox"); 
      fldr.open(Folder.HOLDS_MESSAGES); 
      // HOLDS_MESSAGES); 
      Message[] ar = fldr.getMessages(); 
      int count = fldr.getMessageCount(); 
      resp.getWriter().println(count); 
      resp.getWriter().println(ar[0].getAllRecipients()[0].toString()); 
      resp.getWriter().println(ar[0].getFrom()[0].toString()); 
      resp.getWriter().println(ar[0].getSentDate().toString()); 
      resp.getWriter().println(ar[0].getSubject()); 

      resp.getWriter().println(ar[0].getContent().toString()); 

     } catch (Exception exc) { 
      try { 
       resp.getWriter().println(exc + "error"); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    } 
} 
+0

"오류 메시지가 나에게 나타납니다"는 의미는 무엇입니까? 어떤 오류 메시지가 나타 납니까? [JavaMail 디버그 출력] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#debug)은 무엇을 표시합니까? 또한 [일반적인 실수] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#commonmistakes)를 수정하십시오. –

답변

0

나는 그것을 해결하기 위해 관리 :

은 GAE 프로젝트의 코드입니다.

만 당신은에서 appengine-web.xml을 구성 파일에이 줄을 추가해야합니다

<class-loader-config>  
     <priority-specifier filename="imap.jar"/> 
     <priority-specifier filename="gimap.jar"/>  
     <priority-specifier filename="dsn.jar"/>  
     <priority-specifier filename="mailapi.jar"/>  
</class-loader-config> 

감사합니다.