我找到了许多可能与这个问题匹配的东西,但没有一个对我有用。
我正在使用 Apache Camel 将文件作为电子邮件附件传递。它使用以下 Maven 目标完美地工作:
码头:运行码头:运行-爆炸码头:运行-战争
我正在使用java 1.6。我的部署容器是tomcat6。在 tomcat6 和 tomcat7 中,我得到以下异常:
org.springframework.mail.MailSendException:失败的消息:javax.mail.MessagingException:缺少开始边界;消息异常详细信息 (1) 是:失败消息 1:javax.mail.MessagingException:在 javax.mail.internet.MimeMultipart.parsebm(MimeMultipart.java:882) 处缺少开始边界
网络上的建议表明这是一个类加载器问题。要么没有找到activation-1.1.jar 或mail-1.4.4.jar 文件,要么没有找到mail-1.4.4.jar 中的mailcap 文件。
我试过把这些 jar 文件放在 tomcat/lib 中。我已经尝试将 jar 文件中的 mailcap 复制到爆炸战争的 META-INF 目录中。这些都没有区别。
版本:
Windows:Apache Tomcat/7.0.5 JDK 1.6.0_27-b07 Apache Camel 2.8.0-fuse-00-08
Linux - ubuntu 10.04 LTS 附带的版本 - 我稍后会检查并添加。
这是我的骆驼路线的简化版本:
<route id="uploadFileForm">
<from uri="jetty:http://0.0.0.0:9095/premier"/>
<to uri="velocity:form.html"/>
</route>
<route id="uploadFile">
<from uri="jetty:http://0.0.0.0:9095/fup"/>
<to uri="log:mail?showBody=true&showHeaders=true"/>
<to uri="smtp://localhost"/>
<setHeader headerName="content-type"><constant>text/plain</constant></setHeader>
<setBody><constant>Message Sent</constant></setBody>
</route>
这是日志显示的内容:
[4 - seda://mail-ws-audio-files] 邮件信息交换[ExchangePattern:InOut, Headers:{Connection=Keep-Alive, CamelHttpServletRequest=org.eclipse.jetty.servlets.MultiPartFilter$Wrapper@bb32c5, upfile= D:downloads!37SQFTS.pdf, CamelHttpPath=/fup, subject=BBC Premier League Update - Edition 1, CamelHttpQuery=null, CamelHttpServletResponse=HTTP/1.1 200 , UntilMessage=直到格林威治标准时间 10:30,当第二个公告可用时(仅限周一至周五),主机=localhost:9095,用户代理=Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.1;Trident/4.0;SLCC2; .NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;.NET4.0C;.NET4.0E),Accept-Encoding=gzip,放气,bulletin_type=am,to=julian.cable@ yahoo.com,cc=admin@localhost,breadcrumbId=ID-B1-L0N336601-58958-1335935026761-0-2,CamelHttpUrl=http://localhost:9095/fup,Content-Length=24896,Referer=http:// localhost:9095/premier, from=jfbcable@gmail.com, Accept=image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*, Accept-Language=en-GB, Content-Type=multipart/form-data; 边界=---------------7dc3a8371906f6, 请在附件中找到我们文件的最新版本。
一个最小的示例 maven 项目在这里,战争在这里。如果您在 Eclipse 中运行项目或使用
mvn jetty:run
然后使用http://localhost:9095/premier的表格
您将收到“无法联系服务器”异常。但是,如果您将战争部署到 tomcat,您将得到缺少的开始边界异常。如果您编辑 applicationContext.xml 并将* * 替换为有效值,它实际上会发送一封电子邮件。
有任何想法吗?