public Date getMessageDate(Message message) throws MessagingException { Date messageDate = message.getReceivedDate(); if (message.getReceivedDate() == null) { if (message.getSentDate() != null) { messageDate = message.getSentDate(); } } return messageDate; }
public int handleFirstTime( Account account, FolderHelper folderHelper, int folderDepth, String messageStoreBucket, Set<String> storedMessageIds, String context, StopWatch watch) throws Exception { int newMessages = 0; Date lastMessageReceivedDate = null; log.info(String.format("handling first mailcheck for %s", context)); Folder folder; while ((folder = folderHelper.next()) != null) { String folderContext = context + " ,folderName=" + folder.getFullName(); IMAPFolder imapFolder = (IMAPFolder) folder; Collection<Integer> messages = getFirstTimeMessages(imapFolder, folderContext); if (messages.size() > 0) { storedMessageIds = new HashSet<String>(); for (Integer messageNumber : messages) { Message message = imapFolder.getMessage(messageNumber); if (lastMessageReceivedDate == null || lastMessageReceivedDate.before(message.getReceivedDate())) { lastMessageReceivedDate = message.getReceivedDate(); } String messageId = getId(account, imapFolder, message); if (processMessage( account, message, messageNumber, messageId, imapFolder, storedMessageIds, messageStoreBucket, folderContext, watch, folderHelper)) { newMessages++; } } } } updateAccount(account, null, 0, folderDepth, lastMessageReceivedDate); return newMessages; }
/** Returns the date the message was sent (or received if the sent date is null. */ public String getDate() throws MessagingException { Date date; SimpleDateFormat df = new SimpleDateFormat("EE M/d/yy"); if ((date = message.getSentDate()) != null) return (df.format(date)); else if ((date = message.getReceivedDate()) != null) return (df.format(date)); else return ""; }
public static void main(String[] args) throws MessagingException, IOException { IMAPFolder folder = null; Store store = null; String subject = null; Flag flag = null; try { Properties props = System.getProperties(); props.setProperty("mail.store.protocol", "imaps"); props.setProperty("mail.imap.host", "imap.googlemail.com"); SimpleAuthenticator authenticator = new SimpleAuthenticator("*****@*****.**", "hhy8611hhyy"); Session session = Session.getDefaultInstance(props, null); // Session session = Session.getDefaultInstance(props, authenticator); store = session.getStore("imaps"); // store.connect("imap.googlemail.com","*****@*****.**", "hhy8611hhyy"); // store.connect("imap.googlemail.com","*****@*****.**", "hhy8611hhyy"); store.connect("*****@*****.**", "hhy8611hhy"); // folder = (IMAPFolder) store.getFolder("[Gmail]/Spam"); // This doesn't work for other email // account folder = (IMAPFolder) store.getFolder("inbox"); // This works for both email account if (!folder.isOpen()) folder.open(Folder.READ_WRITE); Message[] messages = messages = folder.getMessages(150, 150); // folder.getMessages(); System.out.println("No of get Messages : " + messages.length); System.out.println("No of Messages : " + folder.getMessageCount()); System.out.println("No of Unread Messages : " + folder.getUnreadMessageCount()); System.out.println("No of New Messages : " + folder.getNewMessageCount()); System.out.println(messages.length); for (int i = 0; i < messages.length; i++) { System.out.println( "*****************************************************************************"); System.out.println("MESSAGE " + (i + 1) + ":"); Message msg = messages[i]; // System.out.println(msg.getMessageNumber()); // Object String; // System.out.println(folder.getUID(msg) subject = msg.getSubject(); System.out.println("Subject: " + subject); System.out.println("From: " + msg.getFrom()[0]); System.out.println("To: " + msg.getAllRecipients()[0]); System.out.println("Date: " + msg.getReceivedDate()); System.out.println("Size: " + msg.getSize()); System.out.println(msg.getFlags()); System.out.println("Body: \n" + msg.getContent()); System.out.println(msg.getContentType()); } } finally { if (folder != null && folder.isOpen()) { folder.close(true); } if (store != null) { store.close(); } } }
public CustomProperties getMessageProperties(Message message, String prefix, CustomProperties p) throws MessagingException, IOException { CustomProperties envVars = new CustomProperties(); String msgSubject = stringify(message.getSubject()); envVars.put(prefix + "subject", msgSubject); envVars.put(prefix + "from", stringify(message.getFrom())); envVars.put(prefix + "replyTo", stringify(message.getReplyTo())); envVars.put(prefix + "flags", stringify(message.getFlags())); envVars.put(prefix + "folder", stringify(message.getFolder())); envVars.put(prefix + "messageNumber", stringify(message.getMessageNumber())); envVars.put(prefix + "receivedDate", stringify(message.getReceivedDate())); envVars.put(prefix + "sentDate", stringify(message.getSentDate())); envVars.put(prefix + "headers", stringify(message.getAllHeaders())); envVars.put(prefix + "content", stringify(message)); envVars.put(prefix + "contentType", stringify(message.getContentType())); envVars.put(prefix + "recipients", stringify(message.getAllRecipients())); // add parameters from email content final CustomProperties properties = CustomProperties.read(getText(message)); envVars.putAll(properties); // envVars.put(prefix + "emailParams", stringify(properties.getMap(), "=", "&")); // add "jobTrigger" if (p.has(subjectContains)) { String subject = p.get(subjectContains); // normalise strings, find index, then get text after it int idx = msgSubject.toLowerCase().indexOf(subject.toLowerCase()); int beginIndex = idx + subject.length(); if (idx > -1 && beginIndex < msgSubject.length()) { envVars.put(prefix + "jobTrigger", msgSubject.substring(beginIndex).trim()); } } return envVars; }
public Object getValueAt(int row, int column) { try { Message message = getMessage(row); switch (column) { case 0: // Answered? return (message.isSet(Flags.Flag.ANSWERED) ? "R" : ""); case 1: // From. Address[] addresses = message.getFrom(); if (addresses == null || addresses.length == 0) { return "(No sender)"; } // Given "Personal Name <*****@*****.**>", choose "Personal Name" if it's available, and // "*****@*****.**" if not. InternetAddress address = (InternetAddress) addresses[0]; String name = address.getPersonal(); return (name != null) ? name : address.getAddress(); case 2: // Subject. String subject = message.getSubject(); return (subject != null) ? subject : "(No subject)"; case 3: // Date. Date date = message.getReceivedDate(); return (date != null) ? Mailer.dateToIsoString(date) : "Unknown"; default: return "<no-column-" + column + ">"; } } catch (MessagingException ex) { ex.printStackTrace(); return "<error>"; } }
/** Method for checking if the message has a received date field. */ public boolean hasReceivedDate() throws MessagingException { return (message.getReceivedDate() != null); }
/** Returns the received date field. */ public String getReceivedDate() throws MessagingException { if (hasReceivedDate()) return (message.getReceivedDate().toString()); else return ""; }
private Date getDateToDetermineOrder(Message message) throws MessagingException { return message instanceof IMAPMessage ? message.getReceivedDate() : message.getSentDate(); }