/* * MessageWrapShowMultipart.java * * Created on den 23 september 2001, 15:55 */ package ip1.u9.util; import javax.mail.*; import javax.mail.internet.*; import java.io.IOException; import javax.mail.MessagingException; import java.util.StringTokenizer; import ip1.u7.b.*; /** För allmän informaton om MessageWrap-klasserna, se MessageWrap * * @author Henrik Johansson, DS80 * @version ht2001 */ public class MessageWrapShowMultipart extends MessageWrapShow { protected Attachment[] attachments; /** Skapar nytt MessageWrapShowMultipart * Anropas alltid via MessageWrapFactory * * @param message basmeddelande som skall formateras och eventuellt ges tilläggsinformation */ protected MessageWrapShowMultipart(Message message) { this(message, null); } /** Skapar nytt MessageWrapShowMultipart * Anropas alltid via MessageWrapFactory * * @param message basmeddelande som skall formateras och eventuellt ges tilläggsinformation * @param server Kontoinformation som eventuellt läggs till i meddealnde tex avsändaradress eller signatur */ protected MessageWrapShowMultipart(Message message, ServerInfo server) { super(message, server); } /** Returnerar basmeddelandets innehåll*/ public String getContent() throws MessagingException, IOException { MimeMultipart multipart = (MimeMultipart) message.getContent(); return getMultipartContent(multipart); } private String getMultipartContent(MimeMultipart multipart) throws MessagingException, IOException { String content = ""; for (int i = 0, n = multipart.getCount(); i < n; i++) { Part part = multipart.getBodyPart(i); if(i > 0) { content += getSeparator(part); } content += getBodyPartContent(part); } return content; } private String getBodyPartContent(Part part) throws MessagingException, IOException { if(part.getContent() instanceof MimeMultipart) return getMultipartContent((MimeMultipart) part.getContent()); else { String content = ""; String disposition = part.getDisposition(); if ((disposition != null && disposition.equals(Part.INLINE)) || (disposition == null && (((MimeBodyPart) part).isMimeType("text/plain") || ((MimeBodyPart) part).isMimeType("text/html")))) { return part.getContent().toString(); } } return ""; } private String getSeparator(Part part) throws MessagingException { MimeBodyPart mbp = (MimeBodyPart) part; String content = "\n ---------- \n"; if(mbp.getFileName() != null) content += ("\n Filnamn: " + mbp.getFileName()); String type = mbp.getContentType(); StringTokenizer tokenizer = new StringTokenizer(type, ";"); if(tokenizer.hasMoreTokens()) content += ("\n Typ: " + tokenizer.nextToken()); if(mbp.getSize() >= 0) content += ("\n Storlek: " + mbp.getSize() + " byte"); content += "\n\n"; return content; } /** Returnerar en Attachment-matris fylld med de attachments som finns i basmeddelandet.*/ public Attachment[] getAttachments() throws MessagingException, IOException { if(attachments == null) { MimeMultipart multipart = (MimeMultipart) message.getContent(); Attachment[] attachments = new Attachment[multipart.getCount() - 1]; for (int i = 1, n = multipart.getCount(); i < n; i++) { Part part = multipart.getBodyPart(i); attachments[i - 1] = new Attachment(part); } this.attachments = attachments; } return attachments; } }