1

Java を使用して GAE で Gmail の受信トレイにアクセスしようとしています。IMAP 経由と POP3 経由で試しました。IMAP のコードは次のとおりです。

public class InboxServlet extends HttpServlet {
private static final Logger log = Logger.getLogger(InboxServlet.class.getName());
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
        Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imaps");
    props.put("mail.imap.host" , "imap.gmail.com");
    props.put("mail.imap.user" , "EMAIL");
    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( "EMAIL" , "PASSWORD");
                }
    });
    try {
        Store store  = session.getStore("imap");
        store.connect("imap.gmail.com" ,993, "EMAIL" , "PASSWORD");
        Folder fldr = store.getFolder("Inbox");
        fldr.open(Folder.READ_WRITE)
        Message[] ar = fldr.getMessages();
        int count = fldr.getMessageCount();
        resp.getWriter().println(count);
        resp.getWriter().println("<br>");
        resp.getWriter().println(ar[0].getAllRecipients()[0].toString());
        resp.getWriter().println("<br>");
        resp.getWriter().println(ar[0].getFrom()[0].toString());
        resp.getWriter().println("<br>");
        resp.getWriter().println(ar[0].getSentDate().toString());
        resp.getWriter().println("<br>");
        resp.getWriter().println(ar[0].getSubject());
        resp.getWriter().println("<br>");
            ar[0].getContent();
        } catch(Exception exc) {
        resp.getWriter().println(exc + "error");
    }
}
}

このコードを使用すると、メッセージの内容以外のすべてを取得できます。

これは POP3 のコードです。

public class InboxServlet extends HttpServlet {

 private Store store = null;

private static final Logger log = Logger.getLogger(InboxServlet.class.getName());
public void doGet(HttpServletRequest req, HttpServletResponse resp) 
        throws IOException {

    String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

        Properties pop3Props = new Properties();

        pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
        pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false");
        pop3Props.setProperty("mail.pop3.port",  "995");
        pop3Props.setProperty("mail.pop3.socketFactory.port", "995");

        URLName url = new URLName("pop3", "pop.gmail.com", 995, "",
                "EMAIL", "PASSWORD");

        Session session = Session.getDefaultInstance(pop3Props , new Authenticator() {
            @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication( "EMAIL" , "PASSWORD");
                    }
        });

             try {
        store = new POP3SSLStore(session, url);
        store.connect();

        Folder fldr = store.getFolder("Inbox");
        fldr.open(Folder.READ_WRITE);
        Message[] ar = fldr.getMessages();
        int count = fldr.getMessageCount();
        resp.getWriter().println(count);
        resp.getWriter().println("<br> ");
            try{
          Object content = ar[1].getContent();
          resp.getWriter().println("From: ");
          resp.getWriter().println(ar[1].getFrom().toString());
          resp.getWriter().println(ar[1].getSubject());
          resp.getWriter().println("<br>");
          resp.getWriter().println("<br>Date: ");
          resp.getWriter().println(prueba.getDescription().toString());
          content = ar[1].getContent();
          resp.getWriter().println("<br> Content: ");
          resp.getWriter().println(content.toString());
        }catch (Error e){
          resp.getWriter().println("error " + e);

        }
        } catch(Exception exc) {
            resp.getWriter().println(exc + "error");
        }
    } 
  }

これでメッセージの内容しか取得できませんが、件名、受信者、日付などは取得できません。

単一のシステムですべてを取得する方法を知っている人はいますか?

ありがとう!

4

0 に答える 0