Hi,

we are using the MailComponent to archive certain mails in a database - text
and attachments separated. Most of them are very simple and just plain text
with one or more pdf attachments.

During the last months we have got some mails where the MailComponent (esp.
its MailBinder) run into an exception:

org.apache.camel.RuntimeCamelException: Error populating the initial mail
message attachments
        at
org.apache.camel.component.mail.MailMessage.populateInitialAttachments(MailMessage.java:124)
        at
org.apache.camel.impl.DefaultMessage.createAttachments(DefaultMessage.java:209)
        at
org.apache.camel.impl.DefaultMessage.getAttachments(DefaultMessage.java:274)
        at xxx.BuchhaltungEmailTest.testA(BuchhaltungEmailTest.java:128)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
        at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
        at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:47)
        at org.junit.rules.RunRules.evaluate(RunRules.java:18)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
        at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
        at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
        at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
        at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
        at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
        at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
*Caused by: javax.mail.internet.ParseException: Expected parameter value,
got "null"
        at javax.mail.internet.ParameterList.<init>(ParameterList.java:262)
        at
javax.mail.internet.ContentDisposition.<init>(ContentDisposition.java:100)
        at 
javax.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:1076)
        at 
javax.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:303)
        at
org.apache.camel.component.mail.MailBinding.extractAttachmentsFromMultipart(MailBinding.java:306)
        at
org.apache.camel.component.mail.MailBinding.extractAttachmentsFromMail(MailBinding.java:287)
        at
org.apache.camel.component.mail.MailMessage.populateInitialAttachments(MailMessage.java:121)
*       ... 32 more

These mails are HTML emails and the result of forwarded messages containing
an attachment. They can be viewed without any problems by different mail
client (outlook, thunderbird, zarafa web access).

One of the primary reasons is the try to get the disposition and the
filename. The trace of a custom MailBinder, which catches the exceptions, is
as follows:

TRACE [main] org.apache.camel.component.mail.MailBinding: Part #1:
Disposition: null
TRACE [main] org.apache.camel.component.mail.MailBinding: Part #1:
Description: null
TRACE [main] org.apache.camel.component.mail.MailBinding: Part #1:
ContentType: message/rfc822
TRACE [main] org.apache.camel.component.mail.MailBinding: Part #1: FileName:
null
TRACE [main] org.apache.camel.component.mail.MailBinding: Part #1: Size:
32222
TRACE [main] org.apache.camel.component.mail.MailBinding: Part #1:
LineCount: -1

I am not primarily interested in a technical solution. My question is
whether Camel's MailComponent should be able to deal with such special
formats - at least without throwing an exception.
One the one hand I would say that this is more than Camel's component
can/should provide out-of-the-box. But one the other hand why should the
MailComponent fail on mails that regular mail clients are able to view (and
of course to create).
If you are of the opinion that the MailComponent should be able to deal with
(nearly) all kind of formats then I could try to provide such email and
perhaps even a jUnit test to reproduce the error.

Regards,
Axel



--
View this message in context: 
http://camel.465427.n5.nabble.com/MailComponent-s-claim-to-handle-special-mail-multipart-formats-and-attachments-tp5724859.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to