here is my code for extracting attachments - thank you - I also use this with CSV files and it works ok.
public class EmailProcessor implements Processor { private static final Logger LOG = Logger.getLogger(EmailProcessor.class); private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss"); public void process(Exchange exchange) throws Exception { LOG.debug("Entering EmailProcessor..."); Map<String, DataHandler> attachments = exchange.getIn() .getAttachments(); if ((null == attachments) || (attachments.size() < 1)) { throw new EmailProcessorException("Null or 0 attachements"); } else { LOG.debug("attachments.size = " + attachments.size()); } Map<String, String> emailAttr = gatherEmailHeaderInformation(exchange); List<String> attachmentFilenames = new ArrayList<String>(); try { List<FilenameAndContents> attachmentArray = new ArrayList<FilenameAndContents>(); for (String name : attachments.keySet()) { DataHandler dh = attachments.get(name); // get the file name String filename = dh.getName(); // convert the input string to a string String contents = exchange.getContext().getTypeConverter() .convertTo(String.class, dh.getInputStream()); LOG.info("filename: " + filename); attachmentFilenames.add(filename); FilenameAndContents attachmentFile = new FilenameAndContents(); attachmentFile.setFileContents(contents); attachmentFile.setFileName(filename); attachmentArray.add(attachmentFile); } exchange.getIn().setBody(attachmentArray); } catch (org.apache.camel.TypeConversionException tce) { throw new EmailProcessorException( "Unable to type convert from file to string", tce); } catch (java.io.IOException ioe) { throw new EmailProcessorException( "IOException while obtaining Input Stream", ioe); } catch (java.lang.UnsupportedOperationException uoe) { throw new EmailProcessorException( "UnsupportedOperationException add operation is not supported by list", uoe); } catch (java.lang.ClassCastException cce) { throw new EmailProcessorException( "ClassCastException element prevents it from being added to list", cce); } catch (java.lang.NullPointerException npe) { throw new EmailProcessorException( "NullPointerException element is null", npe); } catch (java.lang.IllegalArgumentException iae) { throw new EmailProcessorException( "IllegalArgumentException property of element prevents it from being added to list", iae); } archiveEmail(emailAttr, attachmentFilenames, exchange); LOG.debug("Exiting EmailProcessor."); } private Map<String, String> gatherEmailHeaderInformation(Exchange exchange) { final String emailBody = exchange.getIn().getBody(String.class); final Message mailMessage = exchange.getIn().getBody( javax.mail.Message.class); Map<String, String> attr = new HashMap<String, String>(); try { if (null != mailMessage) { final Address[] fromArray = mailMessage.getFrom(); if (null != fromArray) { String fromStr = convertAddressListToString(fromArray); attr.put("from", fromStr); } final Address[] toArray = mailMessage .getRecipients(javax.mail.Message.RecipientType.TO); if (null != toArray) { String toStr = convertAddressListToString(fromArray); attr.put("to", toStr); } final Address[] ccArray = mailMessage .getRecipients(javax.mail.Message.RecipientType.CC); if (null != ccArray) { String ccStr = convertAddressListToString(fromArray); attr.put("CC", ccStr); } final Address[] bccArray = mailMessage .getRecipients(javax.mail.Message.RecipientType.BCC); if (null != bccArray) { String bccStr = convertAddressListToString(fromArray); attr.put("BCC", bccStr); } final String subjectStr = mailMessage.getSubject(); if (null != subjectStr) { attr.put("subject", subjectStr); } final Date sentDate = mailMessage.getReceivedDate(); if (null != sentDate) { attr.put("sentDate", sdf.format(sentDate)); } final Date receivedDate = mailMessage.getSentDate(); if (null != receivedDate) { attr.put("receivedDate", sdf.format(receivedDate)); } if (null != emailBody) { attr.put("body", emailBody); } } } catch (javax.mail.MessagingException me) { LOG.error("Unable to gather email header information"); } return attr; } private void archiveEmail(Map<String, String> attr, List<String> attachmentFilenames, Exchange exchange) { final String archivePath = exchange.getIn().getHeader("emailArchive", String.class); Path parentP = Paths.get(archivePath); Path fileP; if (null != attr.get("receivedDate")) { fileP = Paths.get(archivePath, exchange.getExchangeId() + "." + attr.get("receivedDate")); } else { fileP = Paths.get(archivePath, exchange.getExchangeId()); } try { Files.createDirectories(parentP); } catch (IOException ioe) { LOG.error("Unable to create email archive directories"); ioe.printStackTrace(); } Charset charset = Charset.forName("utf-8"); try (BufferedWriter bufferedWriter = Files.newBufferedWriter(fileP, charset)) { if (null != attr.get("from")) { bufferedWriter.write("From:" + attr.get("from")); bufferedWriter.newLine(); } if (null != attr.get("to")) { bufferedWriter.write("To:" + attr.get("to")); bufferedWriter.newLine(); } if (null != attr.get("CC")) { bufferedWriter.write("CC:" + attr.get("CC")); bufferedWriter.newLine(); } if (null != attr.get("BCC")) { bufferedWriter.write("BCC" + attr.get("BCC")); bufferedWriter.newLine(); } if (null != attr.get("subject")) { bufferedWriter.write("Subject:" + attr.get("subject")); bufferedWriter.newLine(); } if (null != attr.get("sentDate")) { bufferedWriter.write("Sent Date:" + attr.get("sentDate")); bufferedWriter.newLine(); } if (null != attr.get("receivedDate")) { bufferedWriter.write("Received Date:" + attr.get("receivedDate")); bufferedWriter.newLine(); } if (null != attr.get("body")) { bufferedWriter.write("Body:" + attr.get("body")); bufferedWriter.newLine(); } for (String s : attachmentFilenames) { bufferedWriter.write("Attachment File:" + s); bufferedWriter.newLine(); } } catch (IOException ioe) { LOG.error("Unable to write email archive"); ioe.printStackTrace(); } } private String convertAddressListToString(Address[] adds) { String returnStr = ""; for (Address adr : adds) { returnStr = returnStr + adr.toString() + " "; } return returnStr; } } ----- Gary Lee Mills -- View this message in context: http://camel.465427.n5.nabble.com/JAXB-Marshalling-from-email-route-tp5797029p5797032.html Sent from the Camel - Users mailing list archive at Nabble.com.