package br.com.centralit.citcorpore.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Part; import br.com.centralit.citcorpore.bean.Attachment; /** * @author breno.guimaraes * @author Dj * Classe de tratamento e extra��o de conte�do de email com a API JavaMail. */ public class RenderableMessage implements Renderable { private String subject; private String bodytext; ArrayList<Attachment> attachments; /** Creates a new instance of RenderableMessage */ public RenderableMessage(Message m) throws MessagingException,IOException { subject = m.getSubject(); attachments=new ArrayList<Attachment>(); extractPart(m); } private void extractPart(final Part part) throws MessagingException, IOException { if(part.getContent() instanceof Multipart) { Multipart mp = (Multipart)part.getContent(); for(int i=0;i<mp.getCount();i++) { extractPart(mp.getBodyPart(i)); } return; } /*if (part.getContentType().startsWith("text/html")) { }*/ else if (!part.getContentType().startsWith("text/plain")) { if (bodytext == null) { // bodytext = (String) part.getContent(); bodytext = ""; } else { bodytext = bodytext + (String) part.getContent() + "<HR/>" ; } Attachment attachment = new Attachment(); attachment.setContenttype(part.getContentType()); attachment.setFilename("c:\\temp\\at_" + part.getFileName()); InputStream in = part.getInputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[8192]; int count = 0; while ((count = in.read(buffer)) >= 0) bos.write(buffer, 0, count); in.close(); attachment.setContent(bos.toByteArray()); attachments.add(attachment); } } public String getSubject() { return subject; } public String getBodytext() { return bodytext; } public int getAttachmentCount() { if(attachments==null) return 0; return attachments.size(); } public Attachment getAttachment(int i) { return attachments.get(i); } }