Author: dbkr
Date: 2006-08-08 12:10:25 +0000 (Tue, 08 Aug 2006)
New Revision: 9964

Modified:
   trunk/apps/Freemail/src/freemail/AccountManager.java
   trunk/apps/Freemail/src/freemail/MailMessage.java
   trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java
Log:
Implement rfc822.header on IMAP fetch command, maybe fixing #629 (fetchmail 
compatability).


Modified: trunk/apps/Freemail/src/freemail/AccountManager.java
===================================================================
--- trunk/apps/Freemail/src/freemail/AccountManager.java        2006-08-08 
10:27:06 UTC (rev 9963)
+++ trunk/apps/Freemail/src/freemail/AccountManager.java        2006-08-08 
12:10:25 UTC (rev 9964)
@@ -96,7 +96,6 @@
        }

        public static PropsFile getAccountFile(File accdir) {
-               System.out.println("==="+accdir);
                PropsFile accfile = new PropsFile(new File(accdir, 
ACCOUNT_FILE));

                if (accdir.exists() && !accfile.exists()) {

Modified: trunk/apps/Freemail/src/freemail/MailMessage.java
===================================================================
--- trunk/apps/Freemail/src/freemail/MailMessage.java   2006-08-08 10:27:06 UTC 
(rev 9963)
+++ trunk/apps/Freemail/src/freemail/MailMessage.java   2006-08-08 12:10:25 UTC 
(rev 9964)
@@ -117,6 +117,22 @@
                }
        }

+       public String getAllHeadersAsString() {
+               Enumeration e = this.headers.elements();
+               StringBuffer buf = new StringBuffer();
+               
+               while (e.hasMoreElements()) {
+                       MailMessageHeader h = (MailMessageHeader) 
e.nextElement();
+                       
+                       buf.append(h.name);
+                       buf.append(": ");
+                       buf.append(h.val);
+                       buf.append("\r\n");
+               }
+               
+               return buf.toString();
+       }
+       
        public PrintStream writeHeadersAndGetStream() throws 
FileNotFoundException {
                this.os = new FileOutputStream(this.file);
                this.ps = new PrintStream(this.os);

Modified: trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java
===================================================================
--- trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java      2006-08-08 
10:27:06 UTC (rev 9963)
+++ trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java      2006-08-08 
12:10:25 UTC (rev 9964)
@@ -440,6 +440,10 @@
                        this.ps.flush();
                        attr = attr.substring("body".length());
                        return this.sendBody(mmsg, attr);
+               } else if (attr.startsWith("rfc822.header")) {
+                       this.ps.print(a.substring(0, "rfc822.header".length()));
+                       this.ps.flush();
+                       return this.sendBody(mmsg, "header");
                }

                if (val == null)
@@ -475,7 +479,7 @@

                String[] parts = IMAPMessage.doSplit(attr, '(', ')');
                for (int i = 0; i < parts.length; i++) {
-                       if (parts[i].toLowerCase().equals("header.fields")) {
+                       if (parts[i].equalsIgnoreCase("header.fields")) {
                                i++;
                                this.ps.print("[HEADER.FIELDS "+parts[i]+"] ");
                                if (parts[i].charAt(0) == '(')
@@ -493,6 +497,14 @@
                                for (int j = 0; j < fields.length; j++) {
                                        buf.append(mmsg.getHeaders(fields[j]));
                                }
+                       } else if (parts[i].equalsIgnoreCase("header")) {
+                               // send all the header fields
+                               try {
+                                       mmsg.readHeaders();
+                               } catch (IOException ioe) {
+                               }
+                               
+                               buf.append(mmsg.getAllHeadersAsString());
                        }

                        this.ps.print("{"+buf.length()+"}\r\n"+buf.toString());


Reply via email to