⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objecttomimemessage.java

📁 提供ESB 应用mule源代码 提供ESB 应用mule源代码
💻 JAVA
字号:
/* * $Id: ObjectToMimeMessage.java 10489 2008-01-23 17:53:38Z dfeist $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.transport.email.transformers;import org.mule.api.MuleMessage;import org.mule.api.transformer.TransformerException;import org.mule.transformer.simple.SerializableToByteArray;import org.mule.transport.email.MailMessageAdapter;import org.mule.util.StringUtils;import java.io.IOException;import java.io.Serializable;import java.util.Iterator;import java.util.Map;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMultipart;import javax.mail.util.ByteArrayDataSource;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * Transforms a javax.mail.Message to a MuleMessage, with support for attachments */public class ObjectToMimeMessage extends StringToEmailMessage{    private Log logger = LogFactory.getLog(getClass());        // @Override    protected void setContent(Object payload, Message msg, String contentType, MuleMessage message)        throws Exception    {        if (message.getAttachmentNames().size() > 0)        {            // The content type must be multipart/mixed            MimeMultipart multipart = new MimeMultipart("mixed");            multipart.addBodyPart(getPayloadBodyPart(message.getPayload(), contentType));            for (Iterator it = message.getAttachmentNames().iterator(); it.hasNext();)            {                String name = (String)it.next();                BodyPart part = getBodyPartForAttachment(message.getAttachment(name), name);                // Check message props for extra headers                addBodyPartHeaders(part, name, message);                multipart.addBodyPart(part);            }            // the payload must be set to the constructed MimeMultipart message            payload = multipart;            // the ContentType of the message to be sent, must be the multipart            contentType = multipart.getContentType();            // content type        }        // now the message will contain the multipart payload, and the multipart        // contentType        super.setContent(payload, msg, contentType, message);    }    protected void addBodyPartHeaders(BodyPart part, String name, MuleMessage message)    {        Map headers = (Map)message.getProperty(            name + MailMessageAdapter.ATTACHMENT_HEADERS_PROPERTY_POSTFIX);        if (null != headers)        {            for (Iterator it = headers.keySet().iterator(); it.hasNext();)            {                try                {                    String key = (String)it.next();                    part.setHeader(key, (String)headers.get(key));                }                catch (MessagingException me)                {                    logger.error("Failed to set bodypart header", me);                }            }        }    }    protected BodyPart getBodyPartForAttachment(DataHandler handler, String name) throws MessagingException    {        BodyPart part = new MimeBodyPart();        part.setDataHandler(handler);        part.setDescription(name);        DataSource source = handler.getDataSource();        // Only set the file name if the DataSource is a file        if (source instanceof FileDataSource)        {            part.setFileName(StringUtils.defaultString(handler.getName(), name));        }        return part;    }    protected BodyPart getPayloadBodyPart(Object payload, String contentType)        throws MessagingException, TransformerException, IOException    {        DataHandler handler;        if (payload instanceof String)        {            handler = new DataHandler(new ByteArrayDataSource((String) payload, contentType));        }        else if (payload instanceof byte[])        {            handler = new DataHandler(new ByteArrayDataSource((byte[])payload, contentType));        }        else if (payload instanceof Serializable)        {            handler = new DataHandler(new ByteArrayDataSource(                (byte[])new SerializableToByteArray().transform(payload), contentType));        }        else        {            throw new IllegalArgumentException();        }        BodyPart part = new MimeBodyPart();        part.setDataHandler(handler);        part.setDescription("Payload");        return part;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -