package de.twenty11.skysail.server.ext.mail; import java.util.Collections; import java.util.List; import java.util.Properties; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Store; import javax.mail.URLName; import javax.mail.search.FlagTerm; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; import org.restlet.resource.ResourceException; import com.sun.mail.pop3.POP3SSLStore; import de.twenty11.skysail.server.core.restlet.ListServerResource2; import de.twenty11.skysail.server.ext.mail.internal.MyApplication; public class MailboxesResource extends ListServerResource2<MailboxDescriptor> { private String id; @Override protected void doInit() throws ResourceException { id = (String) getRequest().getAttributes().get("id"); setDescription("The resource containing the list of mailboxes for '" + id + "'"); } @Override protected List<MailboxDescriptor> getData() { MyApplication app = (MyApplication) getApplication(); EntityManager em = app.getEmf().createEntityManager(); TypedQuery<AccountDescriptor> query = em.createQuery("SELECT c FROM AccountDescriptor c WHERE c.name = :name", AccountDescriptor.class); query.setParameter("name", id); AccountDescriptor account = query.getSingleResult(); Session session = Session.getDefaultInstance(System.getProperties()); 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, "", "evandor", "34efmb22"); session = Session.getInstance(pop3Props, null); Store store = new POP3SSLStore(session, url); try { store.connect(); Folder inbox = store.getFolder("inbox"); inbox.open(Folder.READ_ONLY); Flags seen = new Flags(Flags.Flag.SEEN); FlagTerm unseenFlagTerm = new FlagTerm(seen, false); Message messages[] = inbox.search(unseenFlagTerm); System.out.println(messages); // Folder[] sharedNamespaces = store.getSharedNamespaces(); // System.out.println(sharedNamespaces); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return Collections.emptyList(); } }