List of usage examples for org.apache.commons.net.pop3 POP3Client deleteMessage
public boolean deleteMessage(int messageId) throws IOException
From source file:com.duroty.task.POP3ServiceTask.java
/** * DOCUMENT ME!//from www . j a v a2s . com */ private void flush() { setInit(true); SessionFactory hfactory = null; Session hsession = null; javax.mail.Session msession = null; try { hfactory = (SessionFactory) ctx.lookup(hibernateSessionFactory); hsession = hfactory.openSession(); msession = (javax.mail.Session) ctx.lookup(durotyMailFactory); String pop3Host = msession.getProperty("mail.pop3.host"); int port = 0; try { port = Integer.parseInt(msession.getProperty("mail.pop3.port")); } catch (Exception ex) { port = 0; } Query query = hsession.getNamedQuery("users-mail"); query.setBoolean("active", true); query.setString("role", "mail"); ScrollableResults scroll = query.scroll(); while (scroll.next()) { POP3Client client = new POP3Client(); try { if (port > 0) { client.connect(pop3Host, port); } else { client.connect(pop3Host); } client.setState(POP3Client.AUTHORIZATION_STATE); //client.setDefaultTimeout() Users user = (Users) scroll.get(0); String repositoryName = user.getUseUsername(); if (client.login(repositoryName, user.getUsePassword())) { POP3MessageInfo[] info = client.listUniqueIdentifiers(); if ((info != null) && (info.length > 0)) { for (int i = 0; i < info.length; i++) { if (pool.size() >= poolSize) { break; } Reader reader = client.retrieveMessage(info[i].number); boolean existMessage = existMessageName(hfactory.openSession(), user, info[i].identifier); String key = info[i].identifier + "--" + repositoryName; if (existMessage) { client.deleteMessage(info[i].number); } else { if (!poolContains(key)) { addPool(key); MimeMessage mime = buildMimeMessage(info[i].identifier, reader, user); if (!isSpam(user, mime)) { client.deleteMessage(info[i].number); Mailet mailet = new Mailet(this, info[i].identifier, repositoryName, mime); Thread thread = new Thread(mailet, key); thread.start(); } else { client.deleteMessage(info[i].number); } } } Thread.sleep(100); } } } else { } } catch (Exception e) { } finally { System.gc(); try { client.logout(); client.disconnect(); } catch (Exception e) { } } } } catch (Exception e) { System.gc(); pool.clear(); DLog.log(DLog.ERROR, this.getClass(), e.getMessage()); } catch (OutOfMemoryError e) { System.gc(); pool.clear(); DLog.log(DLog.ERROR, this.getClass(), e.getMessage()); } catch (Throwable e) { System.gc(); pool.clear(); DLog.log(DLog.ERROR, this.getClass(), e.getMessage()); } finally { System.gc(); GeneralOperations.closeHibernateSession(hsession); setInit(false); } }
From source file:com.google.gerrit.server.mail.receive.Pop3MailReceiver.java
/** * handleEmails will open a connection to the mail server, remove emails where deletion is * pending, read new email and close the connection. * * @param async Determines if processing messages should happen asynchronous. *///from w ww . j a v a 2 s . c o m @Override public synchronized void handleEmails(boolean async) { POP3Client pop3; if (mailSettings.encryption != Encryption.NONE) { pop3 = new POP3SClient(mailSettings.encryption.name()); } else { pop3 = new POP3Client(); } if (mailSettings.port > 0) { pop3.setDefaultPort(mailSettings.port); } try { pop3.connect(mailSettings.host); } catch (IOException e) { log.error("Could not connect to POP3 email server", e); return; } try { try { if (!pop3.login(mailSettings.username, mailSettings.password)) { log.error("Could not login to POP3 email server. Check username and password"); return; } try { POP3MessageInfo[] messages = pop3.listMessages(); if (messages == null) { log.error("Could not retrieve message list via POP3"); return; } log.info("Received " + messages.length + " messages via POP3"); // Fetch messages List<MailMessage> mailMessages = new ArrayList<>(); for (POP3MessageInfo msginfo : messages) { if (msginfo == null) { // Message was deleted continue; } try (BufferedReader reader = (BufferedReader) pop3.retrieveMessage(msginfo.number)) { if (reader == null) { log.error("Could not retrieve POP3 message header for message {}", msginfo.identifier); return; } int[] message = fetchMessage(reader); MailMessage mailMessage = RawMailParser.parse(message); // Delete messages where deletion is pending. This requires // knowing the integer message ID of the email. We therefore parse // the message first and extract the Message-ID specified in RFC // 822 and delete the message if deletion is pending. if (pendingDeletion.contains(mailMessage.id())) { if (pop3.deleteMessage(msginfo.number)) { pendingDeletion.remove(mailMessage.id()); } else { log.error("Could not delete message " + msginfo.number); } } else { // Process message further mailMessages.add(mailMessage); } } catch (MailParsingException e) { log.error("Could not parse message " + msginfo.number); } } dispatchMailProcessor(mailMessages, async); } finally { pop3.logout(); } } finally { pop3.disconnect(); } } catch (IOException e) { log.error("Error while issuing POP3 command", e); } }
From source file:org.apache.axis.transport.mail.MailSender.java
/** * Read from server using POP3/*from w w w . java 2 s .c om*/ * @param msgContext * @throws Exception */ private void readUsingPOP3(String id, MessageContext msgContext) throws Exception { // Read the response back from the server String pop3Host = msgContext.getStrProp(MailConstants.POP3_HOST); String pop3User = msgContext.getStrProp(MailConstants.POP3_USERID); String pop3passwd = msgContext.getStrProp(MailConstants.POP3_PASSWORD); Reader reader; POP3MessageInfo[] messages = null; MimeMessage mimeMsg = null; POP3Client pop3 = new POP3Client(); // We want to timeout if a response takes longer than 60 seconds pop3.setDefaultTimeout(60000); for (int i = 0; i < 12; i++) { pop3.connect(pop3Host); if (!pop3.login(pop3User, pop3passwd)) { pop3.disconnect(); AxisFault fault = new AxisFault("POP3", "( Could not login to server. Check password. )", null, null); throw fault; } messages = pop3.listMessages(); if (messages != null && messages.length > 0) { StringBuffer buffer = null; for (int j = 0; j < messages.length; j++) { reader = pop3.retrieveMessage(messages[j].number); if (reader == null) { AxisFault fault = new AxisFault("POP3", "( Could not retrieve message header. )", null, null); throw fault; } buffer = new StringBuffer(); BufferedReader bufferedReader = new BufferedReader(reader); int ch; while ((ch = bufferedReader.read()) != -1) { buffer.append((char) ch); } bufferedReader.close(); if (buffer.toString().indexOf(id) != -1) { ByteArrayInputStream bais = new ByteArrayInputStream(buffer.toString().getBytes()); Properties prop = new Properties(); Session session = Session.getDefaultInstance(prop, null); mimeMsg = new MimeMessage(session, bais); pop3.deleteMessage(messages[j].number); break; } buffer = null; } } pop3.logout(); pop3.disconnect(); if (mimeMsg == null) { Thread.sleep(5000); } else { break; } } if (mimeMsg == null) { pop3.logout(); pop3.disconnect(); AxisFault fault = new AxisFault("POP3", "( Could not retrieve message list. )", null, null); throw fault; } String contentType = mimeMsg.getContentType(); String contentLocation = mimeMsg.getContentID(); Message outMsg = new Message(mimeMsg.getInputStream(), false, contentType, contentLocation); outMsg.setMessageType(Message.RESPONSE); msgContext.setResponseMessage(outMsg); if (log.isDebugEnabled()) { log.debug("\n" + Messages.getMessage("xmlRecd00")); log.debug("-----------------------------------------------"); log.debug(outMsg.getSOAPPartAsString()); } }
From source file:org.apache.james.protocols.pop3.AbstractPOP3ServerTest.java
@Test public void testRetr() throws Exception { InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); ProtocolServer server = null;/*from w w w . j a va2 s.c o m*/ try { String identifier = "id"; TestPassCmdHandler factory = new TestPassCmdHandler(); factory.add("valid", new MockMailbox(identifier, MESSAGE1, MESSAGE2)); server = createServer(createProtocol(factory), address); server.bind(); POP3Client client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertThat(client.login("valid", "valid")).isTrue(); Reader reader = client.retrieveMessage(1); assertThat(reader).isNotNull(); checkMessage(MESSAGE1, reader); reader.close(); // does not exist reader = client.retrieveMessage(10); assertThat(reader).isNull(); // delete and check for the message again, should now be deleted assertThat(client.deleteMessage(1)).isTrue(); reader = client.retrieveMessage(1); assertThat(reader).isNull(); assertThat(client.logout()).isTrue(); } finally { if (server != null) { server.unbind(); } } }
From source file:org.apache.james.protocols.pop3.AbstractPOP3ServerTest.java
@Test public void testTop() throws Exception { InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); ProtocolServer server = null;/* ww w .j a v a2 s. c o m*/ try { String identifier = "id"; TestPassCmdHandler factory = new TestPassCmdHandler(); factory.add("valid", new MockMailbox(identifier, MESSAGE1, MESSAGE2)); server = createServer(createProtocol(factory), address); server.bind(); POP3Client client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertThat(client.login("valid", "valid")).isTrue(); Reader reader = client.retrieveMessageTop(1, 1000); assertThat(reader).isNotNull(); checkMessage(MESSAGE1, reader); reader.close(); reader = client.retrieveMessageTop(2, 1); assertThat(reader).isNotNull(); checkMessage(MESSAGE2, reader, 1); reader.close(); // does not exist reader = client.retrieveMessageTop(10, 100); assertThat(reader).isNull(); // delete and check for the message again, should now be deleted assertThat(client.deleteMessage(1)).isTrue(); reader = client.retrieveMessageTop(1, 1000); assertThat(reader).isNull(); assertThat(client.logout()).isTrue(); } finally { if (server != null) { server.unbind(); } } }
From source file:org.apache.james.protocols.pop3.AbstractPOP3ServerTest.java
@Test public void testDele() throws Exception { InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); ProtocolServer server = null;//from w w w .j a v a2s . c om try { String identifier = "id"; TestPassCmdHandler factory = new TestPassCmdHandler(); factory.add("valid", new MockMailbox(identifier, MESSAGE1, MESSAGE2)); server = createServer(createProtocol(factory), address); server.bind(); POP3Client client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertThat(client.login("valid", "valid")).isTrue(); POP3MessageInfo[] info = client.listMessages(); assertThat(info.length).isEqualTo(2); assertThat(client.deleteMessage(1)).isTrue(); info = client.listMessages(); assertThat(info.length).isEqualTo(1); assertThat(client.deleteMessage(1)).isFalse(); info = client.listMessages(); assertThat(info.length).isEqualTo(1); assertThat(client.deleteMessage(2)).isTrue(); info = client.listMessages(); assertThat(info.length).isEqualTo(0); // logout so the messages get expunged assertThat(client.logout()).isTrue(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertThat(client.login("valid", "valid")).isTrue(); info = client.listMessages(); assertThat(info.length).isEqualTo(0); assertThat(client.logout()).isTrue(); } finally { if (server != null) { server.unbind(); } } }
From source file:org.apache.james.protocols.pop3.AbstractPOP3ServerTest.java
@Test public void testRset() throws Exception { InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); ProtocolServer server = null;/*www .ja va2s. co m*/ try { String identifier = "id"; TestPassCmdHandler factory = new TestPassCmdHandler(); factory.add("valid", new MockMailbox(identifier, MESSAGE1)); server = createServer(createProtocol(factory), address); server.bind(); POP3Client client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertThat(client.login("valid", "valid")).isTrue(); assertThat(client.listMessages().length).isEqualTo(1); assertThat(client.deleteMessage(1)).isTrue(); assertThat(client.listMessages().length).isEqualTo(0); // call RSET. After this the deleted mark should be removed again assertThat(client.reset()).isTrue(); assertThat(client.listMessages().length).isEqualTo(1); assertThat(client.logout()).isTrue(); } finally { if (server != null) { server.unbind(); } } }
From source file:org.apache.james.protocols.pop3.AbstractPOP3ServerTest.java
@Test public void testDifferentStates() throws Exception { InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); ProtocolServer server = null;//from w w w .j a v a 2 s . c o m try { String identifier = "id"; TestPassCmdHandler factory = new TestPassCmdHandler(); factory.add("valid", new MockMailbox(identifier, MESSAGE1, MESSAGE2)); server = createServer(createProtocol(factory), address); server.bind(); POP3Client client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertThat(client.listMessages()).isNull(); assertThat(client.listUniqueIdentifiers()).isNull(); assertThat(client.deleteMessage(1)).isFalse(); assertThat(client.retrieveMessage(1)).isNull(); assertThat(client.retrieveMessageTop(1, 10)).isNull(); assertThat(client.status()).isNull(); assertThat(client.reset()).isFalse(); client.logout(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertThat(client.login("valid", "valid")).isTrue(); assertThat(client.listMessages()).isNotNull(); assertThat(client.listUniqueIdentifiers()).isNotNull(); Reader reader = client.retrieveMessage(1); assertThat(reader).isNotNull(); reader.close(); assertThat(client.status()).isNotNull(); reader = client.retrieveMessageTop(1, 1); assertThat(reader).isNotNull(); reader.close(); assertThat(client.deleteMessage(1)).isTrue(); assertThat(client.reset()).isTrue(); assertThat(client.logout()).isTrue(); } finally { if (server != null) { server.unbind(); } } }