This is an automated email from the ASF dual-hosted git repository. sebb pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-net.git
The following commit(s) were added to refs/heads/master by this push: new ab90a71 Use the date from the From_ line if possible ab90a71 is described below commit ab90a71cf2b43792799866c9ed78823bf34b6298 Author: Sebb <s...@apache.org> AuthorDate: Wed Sep 25 00:27:26 2019 +0100 Use the date from the From_ line if possible --- .../commons/net/examples/mail/IMAPImportMbox.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/commons/net/examples/mail/IMAPImportMbox.java b/src/main/java/org/apache/commons/net/examples/mail/IMAPImportMbox.java index 6c689da..eaeb0a8 100644 --- a/src/main/java/org/apache/commons/net/examples/mail/IMAPImportMbox.java +++ b/src/main/java/org/apache/commons/net/examples/mail/IMAPImportMbox.java @@ -135,7 +135,7 @@ public final class IMAPImportMbox loaded++; } } catch (IOException e) { - System.out.println(imap.getReplyString()); + System.out.println("Error processing msg: " + total + " " + imap.getReplyString()); e.printStackTrace(); System.exit(10); return; @@ -151,15 +151,27 @@ public final class IMAPImportMbox return m.lookingAt(); } + private static String getDate(String msg) { + final Pattern FROM_RE = Pattern.compile("From \\S+ +\\S+ (\\S+) ?(\\S+) (\\S+) (\\S+)"); // From SENDER Fri Sep 13 17:04:01 2019 + // [Fri] Sep 13 HMS 2019 + // output date: 13-Sep-2019 17:04:01 +0000 + String date = null; + Matcher m = FROM_RE.matcher(msg); + if (m.lookingAt()) { + date = m.group(2)+"-"+m.group(1)+"-"+m.group(4)+" "+m.group(3)+" +0000"; + } + return date; + } + private static boolean process(final StringBuilder sb, final IMAPClient imap, final String folder ,final int msgNum) throws IOException { final int length = sb.length(); boolean haveMessage = length > 2; if (haveMessage) { System.out.println("MsgNum: " + msgNum +" Length " + length); - sb.setLength(length-2); // drop trailing CRLF + sb.setLength(length-2); // drop trailing CRLF (mbox format has trailing blank line) String msg = sb.toString(); - if (!imap.append(folder, null, null, msg)) { + if (!imap.append(folder, null, getDate(msg), msg)) { throw new IOException("Failed to import message: " + msgNum + " " + imap.getReplyString()); } }