You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by no...@apache.org on 2009/09/06 20:09:09 UTC
svn commit: r811850 -
/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
Author: norman
Date: Sun Sep 6 18:09:09 2009
New Revision: 811850
URL: http://svn.apache.org/viewvc?rev=811850&view=rev
Log:
Handle multipart/alternatives correctly
Modified:
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
Modified: labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java?rev=811850&r1=811849&r2=811850&view=diff
==============================================================================
--- labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java (original)
+++ labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java Sun Sep 6 18:09:09 2009
@@ -150,47 +150,75 @@
sbPlain.append((String) con);
} else if (con instanceof Multipart) {
- Multipart mp = (Multipart) con;
-
- for (int i = 0; i < mp.getCount(); i++) {
- Part part = mp.getBodyPart(i);
- String contentType = part.getContentType().toLowerCase();
- System.out.println("c: " + contentType);
+ Multipart mp = (Multipart) con;
+ String multipartContentType = mp.getContentType().toLowerCase();
+ System.out.println("mc: " + multipartContentType);
- if (contentType.startsWith("text/plain")) {
- isHTML = false;
- sbPlain.append((String) part.getContent());
- } else if (contentType.startsWith("text/html")) {
- isHTML = true;
- sbPlain.append((String) part.getContent());
-
- } else if (contentType.startsWith("message/rfc822")) {
- // Extract the message and pass it
- MimeMessage msg = (MimeMessage) part.getDataHandler()
- .getContent();
- handleParts(msg, msg.getContent(), sbPlain, isHTML,
- attachmentList);
-
- } else {
-
- if (part.getFileName() != null) {
- MessageAttachment attachment = new MessageAttachment();
- attachment.setName(MimeUtility.decodeText(part
- .getFileName()));
- attachment.setContentType(part.getContentType());
- attachment.setSize(part.getSize());
+ if (multipartContentType.startsWith("multipart/alternative")) {
+ handleMultiPartAlternative(mp, sbPlain, isHTML);
+ } else {
+ for (int i = 0; i < mp.getCount(); i++) {
+ Part part = mp.getBodyPart(i);
+
+ String contentType = part.getContentType().toLowerCase();
+ System.out.println("c: " + contentType);
+
+ if (contentType.startsWith("text/plain")) {
+ isHTML = false;
+ } else if (contentType.startsWith("text/html")) {
+ isHTML = true;
+ sbPlain.append((String) part.getContent());
+
+ } else if (contentType.startsWith("message/rfc822")) {
+ // Extract the message and pass it
+ MimeMessage msg = (MimeMessage) part.getDataHandler()
+ .getContent();
+ handleParts(msg, msg.getContent(), sbPlain, isHTML,
+ attachmentList);
- attachmentList.add(attachment);
} else {
- handleParts(message, part, sbPlain, isHTML,
- attachmentList);
+
+ if (part.getFileName() != null) {
+ MessageAttachment attachment = new MessageAttachment();
+ attachment.setName(MimeUtility.decodeText(part
+ .getFileName()));
+ attachment.setContentType(part.getContentType());
+ attachment.setSize(part.getSize());
+
+ attachmentList.add(attachment);
+ } else {
+ handleParts(message, part, sbPlain, isHTML,
+ attachmentList);
+ }
}
- }
+ }
}
}
}
+
+ private void handleMultiPartAlternative(Multipart mp,StringBuffer sbPlain, boolean isHTML) throws MessagingException, IOException {
+ String text = null;
+ for (int i = 0; i < mp.getCount(); i++) {
+ Part part = mp.getBodyPart(i);
+
+ String contentType = part.getContentType().toLowerCase();
+ System.out.println("c: " + contentType);
+
+ if (contentType.startsWith("text/plain")) {
+ // we prefer plain text of html.. Does this make sense for a webmail client ?
+ isHTML = false;
+ text = (String) part.getContent();
+ break;
+
+ } else if (contentType.startsWith("text/html")) {
+ isHTML = true;
+ text = (String) part.getContent();
+ }
+ }
+ sbPlain.append(text);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org