如何用春季物业中的卷曲牙套解析电子邮件

发布于 2025-02-11 02:53:38 字数 8298 浏览 1 评论 0原文

我有以下代码,该代码将电子邮件发送到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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文