Hi,

How are you looking for the attachment ? In the class loader resource or using 
path ?

I guess your attachement files are not found (either because it’s not private 
package of your bundle, or not imported correctly).

Regards
JB

> Le 4 juin 2020 à 15:03, Kushal Gautam <kushal.gau...@gmail.com> a écrit :
> 
> Camel Version: 2.20.3
> Java: Open JDK 1.8.0_242
> Karaf: 4.2.0
> 
> Hi:
> 
> Currently, I am using camel-mail to fetch mails via IMAP.
> 
> The route is pretty simple and looks like:
> 
> from("imaps://{{IMAP_SERVER_URL}}"
>                + "?username={{IMAP_EMAIL_USER}}"
>                + "&password={{IMAP_EMAIL_PASS}}"
>                + "&unseen=true"
>                + "&delete=false"
>                + "&initialDelay=100"
>                + "&delay={{IMAP_POLL_DURATION}}")
> .....
> 
> My custom processor looks something like below (most of the stuffs taken
> from the attachments example):
> 
> ...
> @Override
>    public void process(Exchange exchange) throws Exception {
> 
>        exchange.getIn().setHeader("HAS_ATTACHMENTS", false);
> 
>        Map<String, DataHandler> attachments =
> exchange.getIn().getAttachments();
> 
>        if (attachments.size() > 0) {
>            for (String name : attachments.keySet()) {
>                DataHandler dh = attachments.get(name);
>                // get the file name
>                String filename = dh.getName();
> 
>                System.out.println(filename);
> 
>                // check if the attachment is an xml file
>                // if not continue to another attachment
>                if(!filename.endsWith(".xml")) {
>                    continue;
>                }
> 
>                System.out.println("email has an xml attachment");
> 
>                // get the content and convert it to byte[]
>                byte[] data = exchange
>                        .getContext()
>                        .getTypeConverter()
>                        .convertTo(byte[].class, dh.getInputStream());
> 
>                exchange.getIn().setHeader("FILE_NAME", filename);
>                exchange.getIn().setHeader("HAS_ATTACHMENTS", true);
> 
>                exchange.getIn().setBody(data);
>                break;
>            }
>        }
> ...
> 
> If I send an email with some attachments, this code works perfectly fine
> when I execute it via Netbeans. But, attachments.size() returns 0 for the
> same code and same email inside Karaf.
> 
> Do I need to configure something specific for this?
> 
> Any inputs on this would be helpful.
> 
> Thanks,
> Cooshal.

Reply via email to