List of usage examples for javax.mail Part setDataHandler
public void setDataHandler(DataHandler dh) throws MessagingException;
From source file:mitm.application.djigzo.james.mailets.BlackberrySMIMEAdapter.java
private void replaceSMIMEAttachment(MimeMessage containerMessage, MimeMessage sourceMessage) throws MessagingException, IOException, PartException { Part smimePart = findAttachment(containerMessage); if (sourceMessage.getSize() > directSizeLimit) { /*/*w w w. j a v a 2s . c om*/ * The message is too large to be sent to the BB directly so we should * sent it as an attachment that can be downloaded and handled using * a content handler on the BB */ String filename = downloadAttachmentName + DOWNLOAD_ATTACHMENT_EXTENSION; smimePart.setFileName(filename); } smimePart.setDataHandler(new DataHandler( new ByteArrayDataSource(sourceMessage.getInputStream(), "application/octet-stream"))); }
From source file:com.aimluck.eip.mail.util.ALMailUtils.java
/** * ??? Part#setText() ???????????/*from ww w .jav a 2 s. c om*/ */ public static void setTextContent(Part p, String s) throws MessagingException { p.setDataHandler(new DataHandler(new JISDataSource(s))); p.setHeader(ALLocalMailMessage.CONTENT_TRANSFER_ENCORDING, "7bit"); }
From source file:org.orbeon.oxf.processor.EmailProcessor.java
private void handlePart(PipelineContext pipelineContext, String dataInputSystemId, Part parentPart, Element partOrBodyElement) throws Exception { final String name = partOrBodyElement.attributeValue("name"); String contentTypeAttribute = partOrBodyElement.attributeValue("content-type"); final String contentType = NetUtils.getContentTypeMediaType(contentTypeAttribute); final String charset; {/* w ww.j av a 2s .c o m*/ final String c = NetUtils.getContentTypeCharset(contentTypeAttribute); charset = (c != null) ? c : DEFAULT_CHARACTER_ENCODING; } final String contentTypeWithCharset = contentType + "; charset=" + charset; final String src = partOrBodyElement.attributeValue("src"); // Either a String or a FileItem final Object content; if (src != null) { // Content of the part is not inline // Generate a FileItem from the source final SAXSource source = getSAXSource(EmailProcessor.this, pipelineContext, src, dataInputSystemId, contentType); content = handleStreamedPartContent(pipelineContext, source); } else { // Content of the part is inline // In the cases of text/html and XML, there must be exactly one root element final boolean needsRootElement = "text/html".equals(contentType);// || ProcessorUtils.isXMLContentType(contentType); if (needsRootElement && partOrBodyElement.elements().size() != 1) throw new ValidationException( "The <body> or <part> element must contain exactly one element for text/html", (LocationData) partOrBodyElement.getData()); // Create Document and convert it into a String final Element rootElement = (Element) (needsRootElement ? partOrBodyElement.elements().get(0) : partOrBodyElement); final Document partDocument = new NonLazyUserDataDocument(); partDocument.setRootElement((Element) rootElement.clone()); content = handleInlinePartContent(partDocument, contentType); } if (!XMLUtils.isTextOrJSONContentType(contentType)) { // This is binary content (including application/xml) if (content instanceof FileItem) { final FileItem fileItem = (FileItem) content; parentPart.setDataHandler(new DataHandler(new DataSource() { public String getContentType() { return contentType; } public InputStream getInputStream() throws IOException { return fileItem.getInputStream(); } public String getName() { return name; } public OutputStream getOutputStream() throws IOException { throw new IOException("Write operation not supported"); } })); } else { byte[] data = NetUtils.base64StringToByteArray((String) content); parentPart.setDataHandler(new DataHandler(new SimpleBinaryDataSource(name, contentType, data))); } } else { // This is text content (including text/xml) if (content instanceof FileItem) { // The text content was encoded when written to the FileItem final FileItem fileItem = (FileItem) content; parentPart.setDataHandler(new DataHandler(new DataSource() { public String getContentType() { // This always contains a charset return contentTypeWithCharset; } public InputStream getInputStream() throws IOException { // This is encoded with the appropriate charset (user-defined, or the default) return fileItem.getInputStream(); } public String getName() { return name; } public OutputStream getOutputStream() throws IOException { throw new IOException("Write operation not supported"); } })); } else { parentPart.setDataHandler( new DataHandler(new SimpleTextDataSource(name, contentTypeWithCharset, (String) content))); } } // Set content-disposition header String contentDisposition = partOrBodyElement.attributeValue("content-disposition"); if (contentDisposition != null) parentPart.setDisposition(contentDisposition); // Set content-id header String contentId = partOrBodyElement.attributeValue("content-id"); if (contentId != null) parentPart.setHeader("content-id", "<" + contentId + ">"); //part.setContentID(contentId); }