/** * Connect to the mail server and delete all mails. */ public void deleteMails() throws MessagingException { Folder folder = getStore().getFolder(MAIL_INBOX); folder.open(Folder.READ_WRITE); // Get folder's list of messages. Message[] messages = folder.getMessages(); // Retrieve message headers for each message in folder. FetchProfile profile = new FetchProfile(); profile.add(FetchProfile.Item.ENVELOPE); folder.fetch(messages, profile); for (Message message : messages) { message.setFlag(Flags.Flag.DELETED, true); } folder.close(true); }
public void getEmail() throws MessagingException, IOException { Session session = Session.getDefaultInstance(System.getProperties(),null); Store store = null; store = session.getStore("imaps"); // store.connect(this.host, this.userName, this.password); // Get default folder Folder folder = store.getDefaultFolder(); folder.getMessages(); folder.getNewMessageCount(); Message m = folder.getMessage(0); m.getMessageNumber(); m.getAllRecipients(); m.getReceivedDate(); m.getFrom(); m.getSubject(); m.getReplyTo(); m.getContent(); m.getSize(); // Get any folder by name Folder[] folderList = folder.list(); }
public void changeStatus( String folderName, long mailIDs[], Flags.Flag newFlag, boolean value ){ try{ Folder folderToUse = mailStore.getFolder(folderName); folderToUse.open( Folder.READ_WRITE ); Flags f = new Flags(); f.add( newFlag ); Message mlist[]; if ( folderToUse instanceof UIDFolder ) mlist = ((UIDFolder)folderToUse).getMessagesByUID( mailIDs ); else mlist = folderToUse.getMessages( returnToInts(mailIDs) ); for ( int x=0; x < mlist.length; x++ ) mlist[x].setFlags( f, value ); folderToUse.close( true ); setData( "succeeded", cfBooleanData.TRUE ); } catch (Exception E ){ setData( "errortext", new cfStringData( E.getMessage() ) ); setData( "succeeded", cfBooleanData.FALSE ); } }
/** * Close connection * <b>Note</b>Internal method * @throws MessagingException */ public void closeStoreConnection( boolean storeConnected ) throws MessagingException { if (storeConnected) { // the folder is empty when the message is not loaded from IMAP server, but from a file Folder imapFolder = message.getFolder(); if (imapFolder == null) { imapFolder = partOfImapFolder; // in case of nested package but still originating from IMAP server } if (imapFolder != null) { Store store = imapFolder.getStore(); if (store != null && store.isConnected()) { // closing store closes and its folders log.debug("Closing store (" + store.toString() + ") and associated folders"); store.close(); } } } }
private void prepareMailbox() throws Exception { // connect to mailbox Mailbox.clearAll(); JavaMailSender sender = new DefaultJavaMailSender(); Store store = sender.getSession().getStore("pop3"); store.connect("localhost", 25, "jones", "secret"); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); folder.expunge(); // inserts 5 new messages Message[] messages = new Message[5]; for (int i = 0; i < 5; i++) { messages[i] = new MimeMessage(sender.getSession()); messages[i].setHeader("Message-ID", "" + i); messages[i].setText("Message " + i); } folder.appendMessages(messages); folder.close(true); }
private static void initInbox() { try { System.out.println("Inbox initiating..."); Properties props = new Properties(); props.setProperty(MAIL_STORE_PROTOCOL_KEY, mailConfig.getProperty(MAIL_STORE_PROTOCOL_KEY)); // Used gmail with lesser secure authentication (https://www.google.com/settings/security/lesssecureapps) // For a full access I should implement OAuth2 for ArdulinkMail (https://java.net/projects/javamail/pages/OAuth2) Session session = Session.getInstance(props, null); Store store = session.getStore(); System.out.println(mailConfig.getProperty(MAIL_HOST_KEY) + " " + mailConfig.getProperty(MAIL_USER_KEY) + " " + mailConfig.getProperty(MAIL_PASSWORD_KEY)); store.connect(mailConfig.getProperty(MAIL_HOST_KEY), mailConfig.getProperty(MAIL_USER_KEY), mailConfig.getProperty(MAIL_PASSWORD_KEY)); // clearDefault(store.getDefaultFolder()); // With GMAIL it doesn't work since "all messages" cannot be cleared. clearMainFolder(store.getFolder("INBOX")); inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_WRITE); System.out.println("Inbox initiated"); } catch (Exception e) { throw new IllegalStateException("Error initiating inbox. Exiting..."); } }
/** * Reconnects if connection is closed. * <b>Note</b>Internal method * @return true if store re-connection is performed and this means that close should be closed after the work is done * @throws MessagingException */ public boolean reconnectStoreIfClosed() throws MessagingException { boolean storeReconnected = false; // the folder is empty when the message is not loaded from IMAP server, but from a file Folder imapFolder = message.getFolder(); if (imapFolder == null) { imapFolder = this.partOfImapFolder; } else { partOfImapFolder = imapFolder; // keep reference } if (imapFolder != null) { Store store = imapFolder.getStore(); if (store != null) { if (!store.isConnected()) { log.debug("Reconnecting store... "); store.connect(); storeReconnected = true; } // Open folder in read-only mode if (!imapFolder.isOpen()) { log.debug("Reopening folder " + imapFolder.getFullName() + " in order to get contents of mail message"); imapFolder.open(Folder.READ_ONLY); } } } return storeReconnected; }
public void receiveByFolder(Folder folder, JavamailConfig javamailConfig) throws MessagingException, IOException { logger.info("receive : {}", folder); if ((Folder.HOLDS_MESSAGES & folder.getType()) != 0) { this.receiveMessageByFolder(folder, javamailConfig); } if ((Folder.HOLDS_FOLDERS & folder.getType()) != 0) { for (Folder childFolder : folder.list()) { this.receiveByFolder(childFolder, javamailConfig); } } if (folder.isOpen()) { // 关闭资源 folder.close(false); } }
private Folder getFolder(String folderName, int mode) { Folder source = null; try { if (folders.containsKey(folderName)) { source = folders.get(folderName); } else { source = store.getFolder(folderName); if (source == null || !source.exists()) { throw new IllegalArgumentException("Invalid folder: " + folderName); } folders.put(folderName, source); } if (!source.isOpen()) { source.open(mode); } } catch (MessagingException ex) { Logger.getLogger(AccountProcessor.class.getName()).log(Level.SEVERE, null, ex); } return source; }
protected Message[] getMessages(Folder folder, DeleteMailRequest request) throws MessagingException { if (request.getMails() != null) { LOGGER.debug("delete mails: {}", request.getMails()); List<String> messageIds = collectMessageIds(request.getMails()); return getMessagesByIds(folder, messageIds); } else if (request.getMessageIds() != null) { LOGGER.debug("delete mails with message ids: {}", request.getMessageIds()); return getMessagesByIds(folder, request.getMessageIds()); } else { LOGGER.debug("delete mails with message numbers: {}", request.getMessageNumbers()); int[] numbers = request.getMessageNumbers().stream().mapToInt(i -> i).toArray(); return folder.getMessages(numbers); } }
/** * Check mail folder for an email using subject. * * @param emailSubject Email subject * @param folder mail folder to check for an email * @param protocol protocol used to connect to the server * @return whether mail received or not * @throws MessagingException if we're unable to connect to the store */ private static boolean isMailReceivedBySubject(String emailSubject, String folder, String protocol, GreenMailUser user) throws MessagingException { boolean emailReceived = false; Folder mailFolder; Store store = getConnection(user, protocol); try { mailFolder = store.getFolder(folder); mailFolder.open(Folder.READ_WRITE); SearchTerm searchTerm = new AndTerm(new SubjectTerm(emailSubject), new BodyTerm(emailSubject)); Message[] messages = mailFolder.search(searchTerm); for (Message message : messages) { if (message.getSubject().contains(emailSubject)) { log.info("Found the Email with Subject : " + emailSubject); emailReceived = true; break; } } } finally { if (store != null) { store.close(); } } return emailReceived; }
/** * Delete all emails in the inbox. * * @param protocol protocol used to connect to the server * @throws MessagingException if we're unable to connect to the store */ public static void deleteAllEmails(String protocol, GreenMailUser user) throws MessagingException { Folder inbox = null; Store store = getConnection(user, protocol); try { inbox = store.getFolder(EMAIL_INBOX); inbox.open(Folder.READ_WRITE); Message[] messages = inbox.getMessages(); for (Message message : messages) { message.setFlag(Flags.Flag.DELETED, true); log.info("Deleted email Subject : " + message.getSubject()); } } finally { if (inbox != null) { inbox.close(true); } if (store != null) { store.close(); } } }
/** * Check whether email received by reading the emails. * * @param protocol to connect to the store * @param user whose mail store should be connected * @param subject the subject of the mail to search * @return * @throws MessagingException when unable to connect to the store */ public static boolean isMailReceived(String protocol, GreenMailUser user, String subject) throws MessagingException { Store store = getConnection(user, protocol); Folder folder = store.getFolder(EMAIL_INBOX); folder.open(Folder.READ_ONLY); boolean isReceived = false; Message[] messages = folder.getMessages(); for (Message message : messages) { if (message.getSubject().contains(subject)) { log.info("Found the Email with Subject : " + subject); isReceived = true; break; } } return isReceived; }
/** * Asserts that a connection to the given mailbox is possible. * * @param protocol * The protocol. * @param isStartTls * True, if StartTLS ist possible. * @param host * The host. * @param port * The port. * @param login * The login. * @param password * The password. * @param mailbox * The mailbox. * @throws ConnectionException * Exception. * @throws MessagingException * Exception. */ private void assertConnection(String protocol, boolean isStartTls, String host, String port, String login, String password, String mailbox) throws ConnectionException, MessagingException { String propertiesProtocolPrefix = "mail." + protocol + "."; Properties properties = new Properties(); properties.putAll(System.getProperties()); properties.put(propertiesProtocolPrefix + "starttls.enable", isStartTls); Session session = Session.getInstance(properties); Store store = session.getStore(protocol); try { store.connect(host, NumberUtils.toInt(port, -1), login, password); Folder folder = store.getFolder(mailbox); if (!folder.exists()) { throw new FolderNotFoundException(); } } finally { store.close(); } }
/** * {@inheritDoc} */ @Override protected void prepareFetching(String mailbox) throws MailboxConnectionException { try { this.folder = (IMAPFolder) getMessageStore().getFolder(mailbox); if (this.folder != null && this.folder.exists()) { if (this.folder.isOpen() && this.folder.getMode() != Folder.READ_WRITE) { this.folder.close(false); this.folder.open(Folder.READ_WRITE); } else if (!folder.isOpen()) { this.folder.open(Folder.READ_WRITE); } } else { String errMsg = "Folder " + mailbox + " not found"; LOGGER.error(errMsg); throw new MailboxConnectionException(errMsg, false); } } catch (MessagingException e) { LOGGER.error("Opening IMAP folder failed.", e); throw new MailboxConnectionException("Opening IMAP folder failed.", e); } }
@Test public void testSendingAndReceiving() throws MessagingException { Session session = EmailUtils.getGMailSession(EmailUtils.user, EmailUtils.pass); String key = (new Long(System.currentTimeMillis())).toString(); EmailUtils.postMail(session, EmailUtils.user, "test" + key, "testmsg" + key); Folder inbox = EmailUtils.openPop3InboxReadWrite(session); Folder trash = EmailUtils.openPop3TrashReadWrite(session); boolean emailReceived = false; for (Message m : inbox.getMessages()) { if (m.getSubject().startsWith("test" + key)) { emailReceived = true; Message[] m_array = inbox.getMessages(m.getMessageNumber(), m.getMessageNumber()); // delete test mail inbox.copyMessages(m_array, trash); m.setFlag(Flags.Flag.DELETED, true); } } EmailUtils.closeFolder(inbox); EmailUtils.closeFolder(trash); assertTrue(emailReceived); }
private void prepareMailbox() throws Exception { // connect to mailbox Mailbox.clearAll(); JavaMailSender sender = new DefaultJavaMailSender(); Store store = sender.getSession().getStore("pop3"); store.connect("localhost", 25, "bill", "secret"); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); folder.expunge(); // inserts 1 new message Message[] messages = new Message[1]; messages[0] = new MimeMessage(sender.getSession()); messages[0].setSubject("TestSubject"); messages[0].setHeader("Message-ID", "0"); messages[0].setText("TestText"); folder.appendMessages(messages); folder.close(true); }
private void prepareMailbox() throws Exception { // connect to mailbox Mailbox.clearAll(); JavaMailSender sender = new DefaultJavaMailSender(); Store store = sender.getSession().getStore("imap"); store.connect("localhost", 25, "claus", "secret"); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); folder.expunge(); // inserts two new messages Message[] msg = new Message[2]; msg[0] = new MimeMessage(sender.getSession()); msg[0].setText("Message 1"); msg[0].setHeader("Message-ID", "0"); msg[0].setFlag(Flags.Flag.SEEN, false); msg[1] = new MimeMessage(sender.getSession()); msg[1].setText("Message 2"); msg[0].setHeader("Message-ID", "1"); msg[1].setFlag(Flags.Flag.SEEN, true); folder.appendMessages(msg); folder.close(true); }
private void prepareMailbox(String user, String type) throws Exception { // connect to mailbox JavaMailSender sender = new DefaultJavaMailSender(); Store store = sender.getSession().getStore(type); store.connect("localhost", 25, user, "secret"); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); folder.expunge(); InputStream is = getClass().getResourceAsStream("/SignedMailTestCaseHurz.elm"); Message hurzMsg = new MimeMessage(sender.getSession(), is); Message[] messages = new Message[] {hurzMsg}; // insert one signed message folder.appendMessages(messages); folder.close(true); }
private void prepareMailbox() throws Exception { // connect to mailbox Mailbox.clearAll(); JavaMailSender sender = new DefaultJavaMailSender(); Store store = sender.getSession().getStore("pop3"); store.connect("localhost", 25, "jones", "secret"); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); folder.expunge(); // inserts 5 new messages Message[] messages = new Message[5]; for (int i = 0; i < 5; i++) { messages[i] = new MimeMessage(sender.getSession()); messages[i].setText("Message " + i); messages[i].setHeader("Message-ID", "myuid-" + i); } folder.appendMessages(messages); folder.close(true); }
private void prepareMailbox() throws Exception { // connect to mailbox Mailbox.clearAll(); JavaMailSender sender = new DefaultJavaMailSender(); Store store = sender.getSession().getStore("imap"); store.connect("localhost", 25, "claus", "secret"); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); folder.expunge(); // inserts two messages with the SEEN flag Message[] msg = new Message[2]; msg[0] = new MimeMessage(sender.getSession()); msg[0].setText("Message 1"); msg[0].setHeader("Message-ID", "0"); msg[0].setFlag(Flags.Flag.SEEN, true); msg[1] = new MimeMessage(sender.getSession()); msg[1].setText("Message 2"); msg[0].setHeader("Message-ID", "1"); msg[1].setFlag(Flags.Flag.SEEN, true); folder.appendMessages(msg); folder.close(true); }
private void prepareMailbox() throws Exception { // connect to mailbox Mailbox.clearAll(); JavaMailSender sender = new DefaultJavaMailSender(); Store store = sender.getSession().getStore("pop3"); store.connect("localhost", 25, "jones", "secret"); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); folder.expunge(); // inserts 5 new messages Message[] messages = new Message[5]; for (int i = 0; i < 5; i++) { messages[i] = new MimeMessage(sender.getSession()); messages[i].setText("Message " + i); messages[i].setHeader("Message-ID", "" + i); } folder.appendMessages(messages); folder.close(true); }
void checkEmails(int maxnum, boolean notify) { try { if (!mailFolder.exists()) return; if ((mailFolder.getType() & Folder.HOLDS_MESSAGES) == 0) return; mailFolder.open(Folder.READ_ONLY); int totalcount = mailFolder.getMessageCount(); // System.err.println(mailFolder + " " + count); int count = Math.min(maxnum, totalcount); // get "count" last messages int end = totalcount; int start = end - count + 1; Message[] messages = mailFolder.getMessages(start, end); addMessages(messages, notify); mailFolder.close(false); } catch (Exception e) { e.printStackTrace(); } }
private static void printFolders(Folder folder) throws MessagingException { System.out.println(folder.getFullName() + " - " + folder.getName()); Folder[] childs = folder.list(); System.out.println("************childs***************"); for (int i = 0; i < childs.length; i++) { printFolders(childs[i]); } // Folder[] personalNamespaces = store.getPersonalNamespaces(); // System.out.println("************personalNamespaces***************"); // for (int i = 0; i < personalNamespaces.length; i++) { // System.out.println(personalNamespaces[i].getFullName() + " - " + personalNamespaces[i].getName()); // } // // Folder[] sharedNamespaces = store.getSharedNamespaces(); // System.out.println("************sharedNamespaces***************"); // for (int i = 0; i < sharedNamespaces.length; i++) { // System.out.println(sharedNamespaces[i].getFullName() + " - " + sharedNamespaces[i].getName()); // } }
private static void clear(Folder folder) throws MessagingException { if(folder.exists() && (folder.getType() & Folder.HOLDS_MESSAGES) == Folder.HOLDS_MESSAGES) { int totMessages = folder.getMessageCount(); System.out.println(totMessages + " messages from folder: " + folder.getFullName()); folder.open(Folder.READ_WRITE); Message[] messages = folder.getMessages(); for (int i = 0; i < messages.length; i++) { System.out.println("Deleting message: " + (i+1) + " of " + totMessages); messages[i].setFlag(Flags.Flag.DELETED, true); } folder.close(true); } Folder[] childs = folder.list(); for (int i = 0; i < childs.length; i++) { clear(childs[i]); } }
public void checkInbox(int mode) throws MessagingException, IOException { if (mode == 0) { return; } boolean show = (mode & MailClient.SHOW_MESSAGES) > 0; boolean clear = (mode & MailClient.CLEAR_MESSAGES) > 0; String action = (show ? "Show" : "") + (show && clear ? " and " : "") + (clear ? "Clear" : ""); System.out.println(action + " INBOX for " + from); Store store = session.getStore(); store.connect(); Folder root = store.getDefaultFolder(); Folder inbox = root.getFolder("inbox"); inbox.open(Folder.READ_WRITE); Message[] msgs = inbox.getMessages(); if (msgs.length == 0 && show) { System.out.println("No messages in inbox"); } for (Message msg2 : msgs) { MimeMessage msg = (MimeMessage) msg2; if (show) { System.out.println(" From: " + msg.getFrom()[0]); System.out.println(" Subject: " + msg.getSubject()); System.out.println(" Content: " + msg.getContent()); } if (clear) { msg.setFlag(Flags.Flag.DELETED, true); } } inbox.close(true); store.close(); System.out.println(); }
public void checkInboxSave(int mode) throws MessagingException, IOException { Store store = session.getStore(); store.connect(); Folder root = store.getDefaultFolder(); Folder inbox = root.getFolder("inbox"); inbox.open(Folder.READ_WRITE); Message[] msgs = inbox.getMessages(); for (Message msg2 : msgs) { POP3Message msg = (POP3Message) msg2; Object object = msg.getContent(); if (object instanceof Multipart) { Multipart multipart = (Multipart) object; for (int i = 0, n = multipart.getCount(); i < n; i++) { MailClient.handlePart(multipart.getBodyPart(i)); } } System.out.println(" From: " + msg.getFrom()[0]); System.out.println(" Subject: " + msg.getSubject()); System.out.println(" Content: " + object); } inbox.close(true); store.close(); }
private Folder openFolder( cfSession _Session, Store popStore ) throws cfmRunTimeException { try{ Folder folder = popStore.getDefaultFolder(); Folder popFolder = folder.getFolder("INBOX"); popFolder.open( Folder.READ_WRITE ); return popFolder; }catch(Exception E){ throw newRunTimeException( E.getMessage() ); } }
/** * @param data the user who owns this folder * @param folder the folder being reflected */ public FolderData(AccountData data, Folder folder) throws MessagingException { _folder = folder; _accountData = data; _holdsMessages = (_folder.getType() & Folder.HOLDS_MESSAGES) > 0; }