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());