1 package org.columba.mail.spam.command; 18 19 import java.io.ByteArrayInputStream ; 20 import java.io.InputStream ; 21 import java.io.SequenceInputStream ; 22 import java.util.Iterator ; 23 import java.util.List ; 24 import java.util.Vector ; 25 26 import org.columba.mail.config.AccountItem; 27 import org.columba.mail.config.MailConfig; 28 import org.columba.mail.folder.IMailbox; 29 import org.columba.ristretto.coder.Base64DecoderInputStream; 30 import org.columba.ristretto.coder.QuotedPrintableDecoderInputStream; 31 import org.columba.ristretto.message.Header; 32 import org.columba.ristretto.message.MimeHeader; 33 import org.columba.ristretto.message.MimePart; 34 import org.columba.ristretto.message.MimeTree; 35 36 42 public final class CommandHelper { 43 44 58 public static InputStream getBodyPart(IMailbox folder, Object uid) 59 throws Exception { 60 MimeTree mimePartTree = folder.getMimePartTree(uid); 61 62 List l = mimePartTree.getLeafsWithContentType(mimePartTree 63 .getRootMimeNode(), "text"); 64 if (l.size() > 1) { 65 Vector streamList = new Vector (); 66 Iterator it = l.iterator(); 67 while (it.hasNext()) { 68 MimePart mp = (MimePart) it.next(); 69 70 InputStream s = getBodyPartStream(folder, uid, mp); 71 streamList.add(s); 72 } 73 74 SequenceInputStream stream = new SequenceInputStream (streamList 75 .elements()); 76 return stream; 77 } else if (l.size() == 1) { 78 MimePart mp = (MimePart) l.get(0); 79 InputStream s = getBodyPartStream(folder, uid, mp); 80 return s; 81 } else { 82 return new ByteArrayInputStream (new byte[0]); 83 84 } 85 86 } 87 88 102 private static InputStream getBodyPartStream(IMailbox folder, Object uid, 103 MimePart mp) throws Exception { 104 InputStream bodyStream = folder.getMimePartBodyStream(uid, mp 105 .getAddress()); 106 107 int encoding = mp.getHeader().getContentTransferEncoding(); 108 109 switch (encoding) { 110 case MimeHeader.QUOTED_PRINTABLE: { 111 bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); 112 113 break; 114 } 115 116 case MimeHeader.BASE64: { 117 bodyStream = new Base64DecoderInputStream(bodyStream); 118 119 break; 120 } 121 } 122 123 return bodyStream; 124 } 125 126 136 public static AccountItem retrieveAccountItem(IMailbox folder, Object uid) 137 throws Exception { 138 AccountItem item = null; 139 140 Object accountUid = folder.getAttribute(uid, "columba.accountuid"); 141 if (accountUid != null) { 142 item = MailConfig.getInstance().getAccountList().uidGet( 144 ((Integer ) accountUid).intValue()); 145 146 } 147 148 if (item == null) { 149 Header header = folder.getHeaderFields(uid, new String [] { "To" }); 151 152 item = MailConfig.getInstance().getAccountList().getAccount( 153 header.get("To")); 154 155 } 156 157 if (item == null) { 158 160 item = MailConfig.getInstance().getAccountList() 161 .getDefaultAccount(); 162 } 163 164 return item; 165 } 166 } | Popular Tags |