List of usage examples for javax.activation DataHandler DataHandler
public DataHandler(URL url)
DataHandler
instance referencing a URL. From source file:org.wso2.carbon.springservices.ui.SpringServiceMaker.java
public void createAndUploadSpringBean(String serviceHierarchy, String springContextId, ServiceUploaderClient client, String springBeanId, String[] beanClasses) throws Exception { String filePathFromArchiveId = getFilePathFromArchiveId(springBeanId); String filePathForSpringContext = getFilePathFromArchiveId(springContextId); Map fileResMap = (Map) configContext.getProperty(FILE_RESOURCE_MAP); fileResMap.remove(springContextId);//w w w .ja va2 s. c o m if (filePathFromArchiveId == null) { String msg = bundle.getString("spring.non.existent.file"); log.warn(msg); throw new AxisFault(msg); } int endIndex = filePathFromArchiveId.lastIndexOf(File.separator); String filePath = filePathFromArchiveId.substring(0, endIndex); String archiveFileName = filePathFromArchiveId.substring(endIndex); archiveFileName = archiveFileName.substring(1, archiveFileName.lastIndexOf(".")); ArchiveManipulator archiveManipulator = new ArchiveManipulator(); // ----------------- Unzip the file ------------------------------------ String unzippeDir = filePath + File.separator + "springTemp"; File unzipped = new File(unzippeDir); if (!unzipped.mkdirs()) { log.error("Error while creating directories.."); } try { archiveManipulator.extract(filePathFromArchiveId, unzippeDir); } catch (IOException e) { String msg = bundle.getString("spring.cannot.extract.archive"); handleException(msg, e); } // TODO copy the spring xml String springContextRelLocation = "spring/context.xml"; FileInputStream in = null; FileOutputStream out = null; try { File springContextRelDir = new File(unzippeDir + File.separator + "spring"); if (!springContextRelDir.mkdirs()) { log.error("Error while creating directories.."); } File absFile = new File(springContextRelDir, "context.xml"); if (!absFile.exists() && !absFile.createNewFile()) { log.error("Error while creating file.."); } File file = new File(filePathForSpringContext); in = new FileInputStream(file); out = new FileOutputStream(absFile); // Transfer bytes from in to out byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } } catch (FileNotFoundException e) { throw AxisFault.makeFault(e); } catch (IOException e) { throw AxisFault.makeFault(e); } finally { try { if (in != null) { in.close(); } if (out != null) { out.flush(); out.close(); } } catch (IOException e) { throw AxisFault.makeFault(e); } } // ---- Generate the services.xml and place it in META-INF ----- File file = new File(unzippeDir + File.separator + "META-INF" + File.separator + "services.xml"); if (!file.mkdirs()) { log.error("Error while creating directories.."); } try { File absoluteFile = file.getAbsoluteFile(); if (absoluteFile.exists() && !absoluteFile.delete()) { log.error("Error while deleting file.."); } if (!absoluteFile.createNewFile()) { log.error("Error while creating file.."); } OutputStream os = new FileOutputStream(file); OMElement servicesXML = createServicesXMLFromSpringBeans(beanClasses, springContextRelLocation); servicesXML.build(); servicesXML.serialize(os); } catch (Exception e) { String msg = bundle.getString("spring.cannot.write.services.xml"); handleException(msg, e); } // ----------------- Create the AAR ------------------------------------ // These are the files to include in the ZIP file String outAARFilename = filePath + File.separator + archiveFileName + ".aar"; try { archiveManipulator.archiveDir(outAARFilename, unzipped.getPath()); } catch (IOException e) { String msg = bundle.getString("springcannot.create.new.aar.archive"); handleException(msg, e); } File fileToUpload = new File(outAARFilename); FileDataSource fileDataSource = new FileDataSource(fileToUpload); DataHandler dataHandler = new DataHandler(fileDataSource); try { client.uploadService(archiveFileName + ".aar", serviceHierarchy, dataHandler); } catch (Exception e) { String msg = bundle.getString("spring.unable.to.upload"); handleException(msg, e); } }
From source file:eagle.common.email.EagleMailClient.java
public boolean send(String from, String to, String cc, String title, String templatePath, VelocityContext context, Map<String, File> attachments) { if (attachments == null || attachments.isEmpty()) { return send(from, to, cc, title, templatePath, context); }/*ww w .j a v a 2 s. c o m*/ Template t = null; List<MimeBodyPart> mimeBodyParts = new ArrayList<MimeBodyPart>(); Map<String, String> cid = new HashMap<String, String>(); for (Map.Entry<String, File> entry : attachments.entrySet()) { final String attachment = entry.getKey(); final File attachmentFile = entry.getValue(); final MimeBodyPart mimeBodyPart = new MimeBodyPart(); if (attachmentFile != null && attachmentFile.exists()) { DataSource source = new FileDataSource(attachmentFile); try { mimeBodyPart.setDataHandler(new DataHandler(source)); mimeBodyPart.setFileName(attachment); mimeBodyPart.setDisposition(MimeBodyPart.ATTACHMENT); mimeBodyPart.setContentID(attachment); cid.put(attachment, mimeBodyPart.getContentID()); mimeBodyParts.add(mimeBodyPart); } catch (MessagingException e) { LOG.error("Generate mail failed, got exception while attaching files: " + e.getMessage(), e); } } else { LOG.error("Attachment: " + attachment + " is null or not exists"); } } //TODO remove cid, because not used at all if (LOG.isDebugEnabled()) LOG.debug("Cid maps: " + cid); context.put("cid", cid); try { t = velocityEngine.getTemplate(BASE_PATH + templatePath); } catch (ResourceNotFoundException ex) { // LOGGER.error("Template not found:"+BASE_PATH + templatePath, ex); } if (t == null) { try { t = velocityEngine.getTemplate(templatePath); } catch (ResourceNotFoundException e) { try { t = velocityEngine.getTemplate("/" + templatePath); } catch (Exception ex) { LOG.error("Template not found:" + "/" + templatePath, ex); } } } final StringWriter writer = new StringWriter(); t.merge(context, writer); if (LOG.isDebugEnabled()) LOG.debug(writer.toString()); return this._send(from, to, cc, title, writer.toString(), mimeBodyParts); }
From source file:io.mapzone.arena.share.app.EMailSharelet.java
private void sendEmail(final String toText, final String subjectText, final String messageText, final boolean withAttachment, final ImagePngContent image) throws Exception { MimeMessage msg = new MimeMessage(mailSession()); msg.addRecipients(RecipientType.TO, InternetAddress.parse(toText, false)); // TODO we need the FROM from the current user msg.addFrom(InternetAddress.parse("support@mapzone.io")); //ArenaConfigMBean.SMTP_USER ) ); msg.setReplyTo(InternetAddress.parse("DO_NOT_REPLY_TO_THIS_EMAIL@mapzone.io")); //ArenaConfigMBean.SMTP_USER ) ); msg.setSubject(subjectText, "utf-8"); if (withAttachment) { // add mime multiparts Multipart multipart = new MimeMultipart(); BodyPart part = new MimeBodyPart(); part.setText(messageText);//ww w .ja va2s. c om multipart.addBodyPart(part); // Second part is attachment part = new MimeBodyPart(); part.setDataHandler(new DataHandler(new URLDataSource(new URL(image.imgResource)))); part.setFileName("preview.png"); part.setHeader("Content-ID", "preview"); multipart.addBodyPart(part); // // third part in HTML with embedded image // part = new MimeBodyPart(); // part.setContent( "<img src='cid:preview'>", "text/html" ); // multipart.addBodyPart( part ); msg.setContent(multipart); } else { msg.setText(messageText, "utf-8"); } msg.setSentDate(new Date()); Transport.send(msg); }
From source file:es.pode.planificador.negocio.trabajos.CargaODEs.java
/** * Mtodo de ejecucin de la tarea./*from ww w .j a va 2s . c om*/ * Publicacin de los ODEs en la plataforma de manera automtica. */ public void execute(JobExecutionContext context) throws JobExecutionException { Long idTarea = null; String usuario = (String) context.getJobDetail().getJobDataMap().get(CtesPlanificador.USUARIO); boolean ejecucionIncorrecta = false; /* Aadimos la seguridad al proceso */ log("Usuario que lanza la tarea: " + usuario); boolean contextoCargado = Autenticar.cargarContextoSeguridad(usuario); if (!contextoCargado) { log.error("ERROR: No han cargado los datos en el contexto de seguridad"); return; } /* * Parmetros propios del trabajo: * pathODEs, pathODEsCargados, pathODEsNoCargados * msgPublicado, msgNoPublicado y msgDescTrabajo * */ ArrayList parametros = (ArrayList) context.getJobDetail().getJobDataMap().get(CtesPlanificador.PARAMETROS); String pathODEs = (String) parametros.get(0); String pathODEsCargados = (String) parametros.get(1); String pathODEsNoCargados = (String) parametros.get(2); String msgPublicado = (String) parametros.get(3); String msgNoPublicado = (String) parametros.get(4); String msgDescTrabajo = (String) parametros.get(5); String sobrescribir = (String) parametros.get(6); log("CargaODEs: " + context.getJobDetail().getFullName() + " ejecutandose a las " + new Date()); /* Comprobamos si existen los directorios de trabajo de la carga de ODEs */ File fPathODEs = new File(pathODEs); if (!fPathODEs.exists()) { log.error("Error: El directorio donde se deben encontrar los ODEs no existe o no se puede acceder a l " + fPathODEs.getAbsolutePath()); JobExecutionException excepcion = new JobExecutionException( "Error: No se ha podido registrar. El directorio de los ODEs no existe: " + fPathODEs.getAbsolutePath()); throw excepcion; } File fpathODEsCargados = new File(pathODEsCargados); if (!fpathODEsCargados.exists()) { log.error( "Error: El directorio donde se deben mover los ODEs cargados no existe o no se puede acceder a l " + fPathODEs.getAbsolutePath()); JobExecutionException excepcion = new JobExecutionException( "Error: No se ha podido registrar. No exste el directorio donde se deben moven los ODEs publicados: " + fpathODEsCargados.getAbsolutePath()); throw excepcion; } File fpathODEsNoCargados = new File(pathODEsNoCargados); if (!fpathODEsNoCargados.exists()) { log.error( "Error: El directorio donde se deben mover los ODEs no cargados no existe o no se puede acceder a l " + fpathODEsNoCargados.getAbsolutePath()); JobExecutionException excepcion = new JobExecutionException( "Error: El directorio donde se deben mover los ODEs no cargados no existe o no se puede acceder a l " + fpathODEsNoCargados.getAbsolutePath()); throw excepcion; } /* Registramos el inicio del trabajo */ idTarea = Planificador.registrarInicioTarea(context.getJobDetail().getName(), context.getJobDetail().getGroup(), msgDescTrabajo, usuario); log("Identificador de la tarea: " + idTarea); /* Recorremos el directorio donde estan los ficheros(ODEs) a publicar */ /* Antiguamente:: Se recogian los odes de una direccion en concreto File ODEs = new File(pathODEs); File[] arrayList = ODEs.listFiles(); */ File fileOde = null; String[] odes = UtilesFicheros.obtenerOdesDePath(pathODEs, true, true); //recorremos todos los odes for (int i = 0; i < odes.length; i++) { try { log("Carga del ODE: " + odes[i]); /* Se comprueba si la tarea ha sido interrumpida */ if (interrupcion) { log("Se para la tarea por peticin del cliente"); break; } /* Antes se ignoraba los directorios, ahora obtenermos una lista de los path de los odes * que esten dentro de una carpeta o de subcarpetas. no hace falta ignorar los directorios * Los directorios no se cargan en el nodo if (arrayList[i].isDirectory()) { log("Directorio: " + arrayList[i].getAbsolutePath()); continue; } //Nos aseguramos que siga existiendo el fichero a cargar if (!arrayList[i].exists()) { log("El fichero " + arrayList[i].getAbsolutePath() + " ha sido borrado o movido"); continue; } */ //recogemos el ode correspondiente en un FILE para tratarlo fileOde = new File(odes[i]); //comprobamos que el ode existe todavia if (!fileOde.exists()) { log("El fichero " + odes[i] + " ha sido borrado o movido"); continue; } FileDataSource fileDS = new FileDataSource(odes[i]); log("FileDataSource: " + fileDS.toString()); /* Llamada al servicio de publicacin con el ODE */ DataHandler pif = new DataHandler(fileDS); log("DataHandler: " + pif.toString()); String codPublicacion = ServiceLocator.instance().getSrvPlanificadorService().publicarPIF(pif, usuario.toString(), msgDescTrabajo + " " + fileOde.getName(), sobrescribir, fileOde.getName()); //Tratamos el codigo para que solo contenga el primero si tuviera mas de uno String codigoCapado = null; if (codPublicacion == null || codPublicacion.equals("")) codigoCapado = "20.1"; else { int posicion = codPublicacion.indexOf(";"); if (posicion == -1) codigoCapado = codPublicacion; else codigoCapado = codPublicacion.substring(0, posicion); } log("PublicarPIF: " + codigoCapado); /* Preparacin del registro del resultado de la publicacin */ TareaEjecutadaVO tarea = new TareaEjecutadaVO(); tarea.setId(idTarea); RegistroTareaEjecutadaVO registro = new RegistroTareaEjecutadaVO(); registro.setTarea_ejecutada(tarea); registro.setFecha(new GregorianCalendar()); registro.setCodigo(codigoCapado); /* Publicacin correcta */ if (codigoCapado.equals(PUBLICACION_CORRECTA)) { log.debug("Registramos que la publicacin ha sido correcta. ODE: " + fileOde.getName()); registro.setEstado(ConstantesAgrega.TRABAJO_CORRECTO); registro.setDescripcion(msgPublicado + ". " + fileOde.getName()); /* Se mueve el ODE publicado al directorio correspondiente */ try { log.debug("Fichero: " + pathODEsCargados + File.separator + fileOde.getName()); File ficheroCargado = new File(pathODEsCargados + File.separator + fileOde.getName()); if (ficheroCargado.exists()) { log.warn("Ya existe un fichero con ese nombre: " + ficheroCargado.getAbsolutePath() + " en la carpeta de cargados. Se elimina para mover el nuevo fichero"); ficheroCargado.delete(); } boolean mov = fileOde.renameTo(ficheroCargado); if (!mov) log.error("El fichero no se ha podido mover: " + fileOde.getAbsolutePath()); } catch (Exception e2) { RegistrarTrabajoException excepcion = new RegistrarTrabajoException( "Error: No se ha podido mover el ODE cargado al directorio de ODEs publicados " + fileOde.getAbsolutePath(), e2); log.error(excepcion); } } else { // Publicacin incorrecta. El ODE no pasa la validacin log.info("El ODE: " + fileOde.getName() + " no es vlido. Cdigo de error: " + codPublicacion); registro.setEstado(ConstantesAgrega.TRABAJO_ERRONEO); // vamos a recoger el error de publicacion if (codPublicacion.indexOf(";") != -1) msgNoPublicado = codPublicacion.substring(codPublicacion.indexOf(";") + 1); registro.setDescripcion(msgNoPublicado + ". " + fileOde.getName()); registro.setCodigo(codigoCapado); ejecucionIncorrecta = true; /* Se mueve el ODE no publicado al directorio correspondiente */ try { log.debug( "Fichero no publicado: " + pathODEsNoCargados + File.separator + fileOde.getName()); File ficheroNoCargado = new File(pathODEsNoCargados + File.separator + fileOde.getName()); if (ficheroNoCargado.exists()) { log.warn("Ya existe un fichero con ese nombre: " + ficheroNoCargado.getAbsolutePath() + " en la carpeta de no cargados. Se elimina para mover el nuevo fichero"); ficheroNoCargado.delete(); } boolean mov = fileOde.renameTo(ficheroNoCargado); if (!mov) log.error("El fichero no se ha podido mover: " + fileOde.getAbsolutePath()); } catch (Exception e2) { RegistrarTrabajoException excepcion = new RegistrarTrabajoException( "Error: No se ha podido mover el ODE no publicado " + fileOde.getAbsolutePath(), e2); log.error(excepcion); } } // Se registra en la tabla derivada como ha ido la carga de ese ODE try { ServiceLocator.instance().getSrvRegistroPlanificadorService().registrarTrabajoHijo(registro); } catch (Exception e1) { RegistrarTrabajoException excepcion = new RegistrarTrabajoException( "Error: No se ha podido registrar la tarea derivada " + e1.getMessage(), e1); log.error(excepcion); } } catch (Exception e) { // Deberan ser excepciones enviadas del servicio de publicacin de ODEs String path = ""; if (fileOde != null || fileOde.getAbsolutePath() != null) path = fileOde.getAbsolutePath(); log.error("Error publicando ODE: " + path + " " + e); ejecucionIncorrecta = true; TareaEjecutadaVO tarea = new TareaEjecutadaVO(); tarea.setId(idTarea); RegistroTareaEjecutadaVO registro = new RegistroTareaEjecutadaVO(); registro.setTarea_ejecutada(tarea); registro.setDescripcion(msgNoPublicado + ". " + fileOde.getName() + " " + e.getMessage()); registro.setEstado(ConstantesAgrega.TRABAJO_ERRONEO); registro.setCodigo(EXCEPCION_NO_CONTROLADA); registro.setFecha(new GregorianCalendar()); /* Registramos la no publicacin del ODE */ try { ServiceLocator.instance().getSrvRegistroPlanificadorService().registrarTrabajoHijo(registro); } catch (Exception e1) { RegistrarTrabajoException excepcion = new RegistrarTrabajoException( "Error: No se ha podido registrar", e1); log.error(excepcion); } /* Se mueve el ODE no publicado al directorio correspondiente */ try { log("Fichero no publicado: " + pathODEsNoCargados + File.separator + fileOde.getName()); File ficheroNoCargado = new File(pathODEsNoCargados + File.separator + fileOde.getName()); if (ficheroNoCargado.exists()) { log.warn("Ya existe un fichero con ese nombre: " + ficheroNoCargado.getAbsolutePath() + " en la carpeta de no cargados. Se elimina para mover el nuevo fichero"); ficheroNoCargado.delete(); } boolean mov = fileOde.renameTo(ficheroNoCargado); if (!mov) log.error("El fichero no se ha podido mover: " + fileOde.getAbsolutePath()); } catch (Exception e2) { RegistrarTrabajoException excepcion = new RegistrarTrabajoException( "Error: No se ha podido mover el ODE no publicado " + fileOde.getAbsolutePath(), e2); log.error(excepcion); } } } //TODO: De este registro se deber encargar la tarea ejecutada /* Registramos la hora de finalizacin de la tarea y si ha sido correcta/incorrecta la publicacin */ try { TareaEjecutadaVO trabajoEjecutado = new TareaEjecutadaVO(); trabajoEjecutado.setId(idTarea); trabajoEjecutado.setFechaFin(new GregorianCalendar()); if (interrupcion) trabajoEjecutado.setEstado(ConstantesAgrega.TRABAJO_INTERRUMPIDO); else if (ejecucionIncorrecta) trabajoEjecutado.setEstado(ConstantesAgrega.TRABAJO_ERRONEO); else trabajoEjecutado.setEstado(ConstantesAgrega.TRABAJO_CORRECTO); ServiceLocator.instance().getSrvRegistroPlanificadorService() .registrarTrabajoFechaFin(trabajoEjecutado); } catch (Exception e1) { RegistrarTrabajoException excepcion = new RegistrarTrabajoException( "Error: No se ha podido registrar el fin del trabajo", e1); log.error(excepcion); } }
From source file:org.apache.axiom.util.stax.XMLStreamReaderUtils.java
/** * Get a {@link DataHandler} for the binary data encoded in an element. The method supports * base64 encoded character data as well as optimized binary data through the * {@link DataHandlerReader} extension./*from www. ja v a 2 s . co m*/ * <p> * <em>Precondition</em>: the reader is on a {@link XMLStreamConstants#START_ELEMENT} * <p> * <em>Postcondition</em>: the reader is on the corresponding * {@link XMLStreamConstants#END_ELEMENT} * * @param reader the stream to read the data from * @return the binary data from the element */ public static DataHandler getDataHandlerFromElement(XMLStreamReader reader) throws XMLStreamException { int event = reader.next(); if (event == XMLStreamConstants.END_ELEMENT) { // This means that the element is actually empty -> return empty DataHandler return new DataHandler(new EmptyDataSource("application/octet-stream")); } else if (event != XMLStreamConstants.CHARACTERS) { throw new XMLStreamException("Expected a CHARACTER event"); } DataHandlerReader dhr = getDataHandlerReader(reader); if (dhr != null && dhr.isBinary()) { DataHandler dh = dhr.getDataHandler(); reader.next(); return dh; } else { WritableBlob blob = new MemoryBlob(); Writer out = new Base64DecodingOutputStreamWriter(blob.getOutputStream()); try { writeTextTo(reader, out); // Take into account that in non coalescing mode, there may be additional // CHARACTERS events loop: while (true) { switch (reader.next()) { case XMLStreamConstants.CHARACTERS: writeTextTo(reader, out); break; case XMLStreamConstants.END_ELEMENT: break loop; default: throw new XMLStreamException("Expected a CHARACTER event"); } } out.close(); } catch (IOException ex) { throw new XMLStreamException("Error during base64 decoding", ex); } return new DataHandler(new BlobDataSource(blob, "application/octet-string")); } }
From source file:it.greenvulcano.gvesb.virtual.utils.MimeMessageHelper.java
public MimeMessageHelper addAttachment(String name, String type, byte[] content) throws MessagingException { BodyPart attachmentPart = new MimeBodyPart(); ByteArrayDataSource byteArrayDataSource = new ByteArrayDataSource(content, type); attachmentPart.setDataHandler(new DataHandler(byteArrayDataSource)); attachmentPart.setFileName(name);//from w w w . j av a 2s .c o m attachmentPart.setDisposition(Part.ATTACHMENT); attachments.add(attachmentPart); return this; }
From source file:org.wso2.carbon.cloud.gateway.agent.CGAgentUtils.java
private static OMNode readNonXML(URL url) throws CGException { try {/* w w w .ja v a 2s . c o m*/ // Open a new connection URLConnection newConnection = getURLConnection(url); if (newConnection == null) { if (log.isDebugEnabled()) { log.debug("Cannot create a URLConnection for given URL : " + url); } return null; } BufferedInputStream newInputStream = new BufferedInputStream(newConnection.getInputStream()); OMFactory omFactory = OMAbstractFactory.getOMFactory(); return omFactory.createOMText( new DataHandler(new SynapseBinaryDataSource(newInputStream, newConnection.getContentType())), true); } catch (IOException e) { throw new CGException("Error when getting a stream from resource's content", e); } }
From source file:org.apache.camel.component.mail.MailBinding.java
protected String populateContentOnMimeMessage(MimeMessage part, MailConfiguration configuration, Exchange exchange) throws MessagingException, IOException { String contentType = determineContentType(configuration, exchange); if (LOG.isTraceEnabled()) { LOG.trace("Using Content-Type " + contentType + " for MimeMessage: " + part); }//from www . j a v a 2s . c o m // always store content in a byte array data store to avoid various content type and charset issues DataSource ds = new ByteArrayDataSource(exchange.getIn().getBody(String.class), contentType); part.setDataHandler(new DataHandler(ds)); // set the content type header afterwards part.setHeader("Content-Type", contentType); return contentType; }
From source file:org.igov.io.mail.Mail.java
public Mail _Attach(DataSource oDataSource, String sFileName, String sDescription) { try {//from w w w. j a v a 2 s . com MimeBodyPart oMimeBodyPart = new MimeBodyPart(); oMimeBodyPart.setHeader("Content-Type", "multipart/mixed"); oMimeBodyPart.setDataHandler(new DataHandler(oDataSource)); oMimeBodyPart.setFileName(MimeUtility.encodeText(sFileName)); oMultiparts.addBodyPart(oMimeBodyPart); LOG.info("(sFileName={}, sDescription={})", sFileName, sDescription); } catch (Exception oException) { LOG.error("FAIL: {} (sFileName={},sDescription={})", oException.getMessage(), sFileName, sDescription); LOG.trace("FAIL:", oException); } return this; }
From source file:mitm.common.mail.MailUtils.java
/** * Converts any 8bit encoded parts to 7bit. Returns true if a part (or all parts) were converted from * 8bit to 7bit./*from www. java 2 s . c o m*/ * * @param part * @throws MessagingException */ public static boolean convertTo7Bit(MimePart part) throws MessagingException, IOException { boolean converted = false; if (part.isMimeType("multipart/*")) { Multipart parts = (Multipart) part.getContent(); int count = parts.getCount(); for (int i = 0; i < count; i++) { boolean partConverted = convertTo7Bit((MimePart) parts.getBodyPart(i)); if (partConverted) { converted = true; } } } else if ("8bit".equalsIgnoreCase(part.getEncoding())) { String encoding = part.isMimeType("text/*") ? "quoted-printable" : "base64"; /* * We need to use a ByteArrayDataSource to make sure it will always be encoded */ part.setDataHandler( new DataHandler(new ByteArrayDataSource(part.getInputStream(), part.getContentType()))); part.setHeader("Content-Transfer-Encoding", encoding); part.addHeader("X-MIME-Autoconverted", "from 8bit to " + encoding + " by Djigzo"); converted = true; } return converted; }