-
Type:
Bug
-
Resolution: Timed out
-
Priority:
Low
-
Component/s: Email - Incoming
-
4
-
Severity 2 - Major
Summary
An email that has a Content-Disposition but no value for that will fail to be processed by Service Desk, and the following error appears in the JIRA logs:
[c.a.s.i.feature.emailchannel.IncomingEmailParser] Error processing email message
javax.mail.internet.ParseException: Expected disposition, got null
at javax.mail.internet.ContentDisposition.<init>(ContentDisposition.java:94)
at javax.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:1193)
at javax.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:315)
at com.atlassian.mail.MailUtils.isAttachment(MailUtils.java:389)
at com.atlassian.mail.MailUtils.addAttachments(MailUtils.java:301)
at com.atlassian.mail.MailUtils.internalGetAttachments(MailUtils.java:289)
at com.atlassian.mail.MailUtils.getAttachments(MailUtils.java:281)
at com.atlassian.servicedesk.squalor.email.ServiceDeskMailUtils.getServiceDeskAttachments(ServiceDeskMailUtils.java:162)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailParser.parse(IncomingEmailParser.java:57)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManagerImpl.lambda$createIssueInJiraContext$16(IncomingEmailManagerImpl.java:428)
at com.atlassian.pocketknife.step.EitherStep1.lambda$then$0(EitherStep1.java:23)
at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:870)
at io.atlassian.fugue.Either.flatMap(Either.java:230)
at com.atlassian.pocketknife.step.EitherStep1.then(EitherStep1.java:23)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManagerImpl.createIssueInJiraContext(IncomingEmailManagerImpl.java:428)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManagerImpl.createIssueFromEmail(IncomingEmailManagerImpl.java:172)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.createNewIssueWithRequestType(IncomingEmailServiceImpl.java:269)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$createNewIssueWithMailChannel$24(IncomingEmailServiceImpl.java:251)
at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:870)
at io.atlassian.fugue.Either.flatMap(Either.java:230)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.createNewIssueWithMailChannel(IncomingEmailServiceImpl.java:251)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$createNewOrCommentOnIssueWithMailChannelAsEmailSender$17(IncomingEmailServiceImpl.java:188)
at io.atlassian.fugue.Option$None.fold(Option.java:383)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.createNewOrCommentOnIssueWithMailChannelAsEmailSender(IncomingEmailServiceImpl.java:187)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$null$14(IncomingEmailServiceImpl.java:175)
at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:139)
at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.runInContext(ReentrantThreadLocalBasedCodeContext.java:57)
at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runInCustomerContext(CustomerContextServiceImpl.java:38)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.inCustomerContext(IncomingEmailServiceImpl.java:479)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$inEmailContext$43(IncomingEmailServiceImpl.java:472)
at com.atlassian.pocketknife.internal.util.runner.AuthenticationContextUtilImpl.runAs(AuthenticationContextUtilImpl.java:56)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.inEmailContext(IncomingEmailServiceImpl.java:474)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$doCreateNewOrCommentOnIssueWithMailChannel$15(IncomingEmailServiceImpl.java:175)
at io.atlassian.fugue.Either$Right.fold(Either.java:606)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.doCreateNewOrCommentOnIssueWithMailChannel(IncomingEmailServiceImpl.java:173)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$createNewOrCommentOnIssueWithMailChannel$6(IncomingEmailServiceImpl.java:148)
at com.atlassian.pocketknife.step.EitherStep2.lambda$null$0(EitherStep2.java:20)
at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:870)
at io.atlassian.fugue.Either.flatMap(Either.java:230)
at com.atlassian.pocketknife.step.EitherStep2.lambda$then$1(EitherStep2.java:20)
at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:870)
at io.atlassian.fugue.Either.flatMap(Either.java:230)
at com.atlassian.pocketknife.step.EitherStep2.then(EitherStep2.java:20)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.createNewOrCommentOnIssueWithMailChannel(IncomingEmailServiceImpl.java:148)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$processEmailWithMailChannel$1(IncomingEmailServiceImpl.java:139)
at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:870)
at io.atlassian.fugue.Either.flatMap(Either.java:230)
at com.atlassian.pocketknife.step.EitherStep1.then(EitherStep1.java:18)
at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.processEmailWithMailChannel(IncomingEmailServiceImpl.java:139)
at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler.processMessage(SDMailHandler.java:76)
at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler.handleNewMessage(SDMailHandler.java:50)
at com.atlassian.jira.internal.mail.processor.feature.processor.MailHandlerWorker.handle(MailHandlerWorker.java:64)
at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.processMailItem(MailProcessorWorker.java:100)
at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.lambda$process$0(MailProcessorWorker.java:77)
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$0(DatabaseAccessorImpl.java:54)
at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.executeInternal(DefaultTransactionalExecutor.java:88)
at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor$1.execute(DefaultTransactionalExecutor.java:42)
at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.lambda$borrowConnectionAndExecute$0(JiraHostConnectionAccessor.java:62)
at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:42)
... 2 filtered
at java.lang.reflect.Method.invoke(Method.java:498)
at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
at com.sun.proxy.$Proxy509.executeQuery(Unknown Source)
... 2 filtered
at java.lang.reflect.Method.invoke(Method.java:498)
at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:136)
at com.sun.proxy.$Proxy509.executeQuery(Unknown Source)
at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.borrowConnectionAndExecute(JiraHostConnectionAccessor.java:50)
at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.execute(JiraHostConnectionAccessor.java:35)
at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.execute(DefaultTransactionalExecutor.java:39)
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:52)
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInNewTransaction(DatabaseAccessorImpl.java:32)
at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.process(MailProcessorWorker.java:74)
at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorService.run(MailProcessorService.java:36)
at com.atlassian.jira.internal.mail.processor.services.MailProcessorExecutor.run(MailProcessorExecutor.java:33)
at com.atlassian.jira.internal.mail.processor.services.AbstractMailExecutor.execute(AbstractMailExecutor.java:41)
at com.atlassian.jira.internal.mail.processor.services.MailJobRunner.runJob(MailJobRunner.java:35)
at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:153)
at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:118)
at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:97)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.launchJob(CaesiumSchedulerService.java:443)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJob(CaesiumSchedulerService.java:438)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJobWithRecoveryGuard(CaesiumSchedulerService.java:462)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(CaesiumSchedulerService.java:390)
at com.atlassian.jira.scheduler.JiraCaesiumSchedulerService.executeQueuedJob(JiraCaesiumSchedulerService.java:75)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService$1.consume(CaesiumSchedulerService.java:285)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService$1.consume(CaesiumSchedulerService.java:282)
at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeJob(SchedulerQueueWorker.java:65)
at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeNextJob(SchedulerQueueWorker.java:59)
at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.run(SchedulerQueueWorker.java:34)
at java.lang.Thread.run(Thread.java:745)
Notes
The email in question looked like this:
--0__=C5BB0AE8DF12DD0C8f9e8a93df938690918cC5BB0AE8DF12DD0C Content-type: multipart/related; Boundary="1__=C5BB0AE8DF12DD0C8f9e8a93df938690918cC5BB0AE8DF12DD0C" Content-Disposition: --1__=C5BB0AE8DF12DD0C8f9e8a93df938690918cC5BB0AE8DF12DD0C Content-type: multipart/alternative; Boundary="2__=C5BB0AE8DF12DD0C8f9e8a93df938690918cC5BB0AE8DF12DD0C" --2__=C5BB0AE8DF12DD0C8f9e8a93df938690918cC5BB0AE8DF12DD0C Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: quoted-printable
Service Desk should handle emails like this in a sensible manner.
- is related to
-
JSDCLOUD-8309 Ability to upload attachment without filename via email
- Closed
- was cloned as
-
JSDSERVER-6551 Malformed Content-Disposition causes emails not to be processed
-
- Gathering Impact
-