如何用春季物业中的卷曲牙套解析电子邮件
我有以下代码,该代码将电子邮件发送到Mailaddress属性中的地址。
<route message="message" destination="mailto:${mailAddress}">
<param name="subject" value="test" />
</route>
包含字符串{xyz}@abc.com
MailAddress在我尝试运行此代码时
Caused by: org.apache.commons.beanutils.ConversionException: Error converting from 'String' to 'java.net.URI' couldn't convert [mailto:{xyz}@abc.com] to an URI
,它会抛出以下例外,然后用%7D替换{用%7b and},它得到了正确的解析,但在SMTP结束时失败了,
SMTPAddressFailedException: 501 #5.1.3 Invalid character ('%') in username.
我该如何解析正确吗?
完整的堆栈
[ERROR] IMB00002 Error converting from 'String' to 'java.net.URI' IMB00001 couldn't convert [mailto:{xyz}@abc.com] to an URI
PropagatedException: Error converting from 'String' to 'java.net.URI' IMB00001 couldn't convert [mailto:{xyz}@abc.com] to an URI
at com.im.imb.mdap.server.MDAPServer.handleJobError(MDAPServer.java:729)
at com.im.imb.mdap.server.MDAPServer.executionFinished(MDAPServer.java:659)
at com.im.imb.mdap.server.process.SameThreadExecutorService.afterExecute(SameThreadExecutorService.java:192)
at com.im.imb.mdap.server.process.SameThreadExecutorService.execute(SameThreadExecutorService.java:96)
at com.im.imb.mdap.server.process.SameThreadExecutorService.submit(SameThreadExecutorService.java:80)
at com.im.imb.mdap.server.process.ExecutionHandler.execute(ExecutionHandler.java:107)
at com.im.imb.mdap.server.JobExecutionHandler.executeJob(JobExecutionHandler.java:94)
at com.im.imb.mdap.server.MDAPServer.executeJob(MDAPServer.java:295)
at com.im.imb.mdap.server.monitors.EventMonitor.service(EventMonitor.java:293)
at com.im.imb.mdap.server.monitors.EventMonitors.service(EventMonitors.java:75)
at com.im.imb.mdap.server.monitors.EventHandlers.handle(EventHandlers.java:77)
at com.im.imb.main.web.IMBHttpServlet.doGet(IMBHttpServlet.java:144)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:295)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:353)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at com.im.http.xssremover.filter.XSSFilter.doFilter(XSSFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:204)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at com.im.imb.main.web.SetEnvironmentFilter.doFilterInternal(SetEnvironmentFilter.java:82)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:32)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3797)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3763)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:344)
at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2451)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2299)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1720)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1680)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:272)
at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)
at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)
at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)
at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:655)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)
Caused by: PropagatedException: Error converting from 'String' to 'java.net.URI' IMB00001 couldn't convert [mailto:{xyz}@abc.com] to an URI
at com.im.imb.mdap.server.processline.ProcessLine.run(ProcessLine.java:107)
at com.im.imb.mdap.server.processline.ProcessLineList.execute(ProcessLineList.java:89)
at com.im.imb.mdap.server.decorator.AbstractNestedJobRunDecorator.executeJob(AbstractNestedJobRunDecorator.java:32)
at com.im.imb.mdap.server.decorator.JobStatisticsDecorator.aroundExecute(JobStatisticsDecorator.java:70)
at com.im.imb.mdap.server.decorator.AbstractNestedJobRunDecorator.executeJob(AbstractNestedJobRunDecorator.java:30)
at com.im.imb.mdap.server.decorator.TransactionJobRunDecorator.aroundExecute(TransactionJobRunDecorator.java:124)
at com.im.imb.mdap.server.decorator.AbstractNestedJobRunDecorator.executeJob(AbstractNestedJobRunDecorator.java:30)
at com.im.imb.mdap.server.decorator.LogJobRunDecorator.aroundExecute(LogJobRunDecorator.java:43)
at com.im.imb.mdap.server.JobCallable.call(JobCallable.java:94)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at com.im.imb.mdap.server.process.SameThreadExecutorService.execute(SameThreadExecutorService.java:91)
... 50 more
Caused by: org.apache.commons.beanutils.ConversionException: Error converting from 'String' to 'java.net.URI' IMB00001 couldn't convert [mailto:{xyz}@abc.com] to an URI
at org.apache.commons.beanutils.converters.AbstractConverter.handleError(AbstractConverter.java:282)
at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:177)
at org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:566)
at org.apache.commons.beanutils.ConvertUtils.convert(ConvertUtils.java:282)
at com.im.commons.lang.Converter.toObject(Converter.java:187)
at com.im.imb.mdap.server.processline.actions.RouteAction.route(RouteAction.java:160)
at com.im.imb.mdap.server.processline.actions.RouteAction.execute(RouteAction.java:127)
at com.im.imb.mdap.server.processline.ProcessLine.run(ProcessLine.java:86)
... 60 more
Caused by: SystemException: couldn't convert [mailto:{xyz}@abc.com] to an URI
at com.im.commons.lang.converter.URIConverter.convertToType(URIConverter.java:74)
at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:169)
... 66 more
I have the following code which sends an email to the address in mailAddress property.
<route message="message" destination="mailto:${mailAddress}">
<param name="subject" value="test" />
</route>
mailAddress contains the string {xyz}@abc.com
When I try to run this code it throws the following exception
Caused by: org.apache.commons.beanutils.ConversionException: Error converting from 'String' to 'java.net.URI' couldn't convert [mailto:{xyz}@abc.com] to an URI
I then replaced { with %7B and } with %7D and it got parsed properly but failed at SMTP end with
SMTPAddressFailedException: 501 #5.1.3 Invalid character ('%') in username.
How do I parse this correctly?
Full stacktrace
[ERROR] IMB00002 Error converting from 'String' to 'java.net.URI' IMB00001 couldn't convert [mailto:{xyz}@abc.com] to an URI
PropagatedException: Error converting from 'String' to 'java.net.URI' IMB00001 couldn't convert [mailto:{xyz}@abc.com] to an URI
at com.im.imb.mdap.server.MDAPServer.handleJobError(MDAPServer.java:729)
at com.im.imb.mdap.server.MDAPServer.executionFinished(MDAPServer.java:659)
at com.im.imb.mdap.server.process.SameThreadExecutorService.afterExecute(SameThreadExecutorService.java:192)
at com.im.imb.mdap.server.process.SameThreadExecutorService.execute(SameThreadExecutorService.java:96)
at com.im.imb.mdap.server.process.SameThreadExecutorService.submit(SameThreadExecutorService.java:80)
at com.im.imb.mdap.server.process.ExecutionHandler.execute(ExecutionHandler.java:107)
at com.im.imb.mdap.server.JobExecutionHandler.executeJob(JobExecutionHandler.java:94)
at com.im.imb.mdap.server.MDAPServer.executeJob(MDAPServer.java:295)
at com.im.imb.mdap.server.monitors.EventMonitor.service(EventMonitor.java:293)
at com.im.imb.mdap.server.monitors.EventMonitors.service(EventMonitors.java:75)
at com.im.imb.mdap.server.monitors.EventHandlers.handle(EventHandlers.java:77)
at com.im.imb.main.web.IMBHttpServlet.doGet(IMBHttpServlet.java:144)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:295)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:353)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at com.im.http.xssremover.filter.XSSFilter.doFilter(XSSFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:204)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at com.im.imb.main.web.SetEnvironmentFilter.doFilterInternal(SetEnvironmentFilter.java:82)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:32)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3797)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3763)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:344)
at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2451)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2299)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1720)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1680)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:272)
at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)
at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)
at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)
at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:655)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)
Caused by: PropagatedException: Error converting from 'String' to 'java.net.URI' IMB00001 couldn't convert [mailto:{xyz}@abc.com] to an URI
at com.im.imb.mdap.server.processline.ProcessLine.run(ProcessLine.java:107)
at com.im.imb.mdap.server.processline.ProcessLineList.execute(ProcessLineList.java:89)
at com.im.imb.mdap.server.decorator.AbstractNestedJobRunDecorator.executeJob(AbstractNestedJobRunDecorator.java:32)
at com.im.imb.mdap.server.decorator.JobStatisticsDecorator.aroundExecute(JobStatisticsDecorator.java:70)
at com.im.imb.mdap.server.decorator.AbstractNestedJobRunDecorator.executeJob(AbstractNestedJobRunDecorator.java:30)
at com.im.imb.mdap.server.decorator.TransactionJobRunDecorator.aroundExecute(TransactionJobRunDecorator.java:124)
at com.im.imb.mdap.server.decorator.AbstractNestedJobRunDecorator.executeJob(AbstractNestedJobRunDecorator.java:30)
at com.im.imb.mdap.server.decorator.LogJobRunDecorator.aroundExecute(LogJobRunDecorator.java:43)
at com.im.imb.mdap.server.JobCallable.call(JobCallable.java:94)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at com.im.imb.mdap.server.process.SameThreadExecutorService.execute(SameThreadExecutorService.java:91)
... 50 more
Caused by: org.apache.commons.beanutils.ConversionException: Error converting from 'String' to 'java.net.URI' IMB00001 couldn't convert [mailto:{xyz}@abc.com] to an URI
at org.apache.commons.beanutils.converters.AbstractConverter.handleError(AbstractConverter.java:282)
at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:177)
at org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:566)
at org.apache.commons.beanutils.ConvertUtils.convert(ConvertUtils.java:282)
at com.im.commons.lang.Converter.toObject(Converter.java:187)
at com.im.imb.mdap.server.processline.actions.RouteAction.route(RouteAction.java:160)
at com.im.imb.mdap.server.processline.actions.RouteAction.execute(RouteAction.java:127)
at com.im.imb.mdap.server.processline.ProcessLine.run(ProcessLine.java:86)
... 60 more
Caused by: SystemException: couldn't convert [mailto:{xyz}@abc.com] to an URI
at com.im.commons.lang.converter.URIConverter.convertToType(URIConverter.java:74)
at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:169)
... 66 more
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论