缺失开始边界异常Tomcat中带有附件文件发送消息时(Missing start boundary

2019-09-16 23:01发布

我发现了一些这个问题对我的工作可能的匹配,但没有的。

我使用Apache的骆驼提供一个文件作为电子邮件attachement。 它的工作原理完全使用以下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)

在网络上的意见认为这是一个类加载器的问题。 它要么激活-1.1.jar或邮件1.4.4.jar文件没有被发现,或者在邮件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的骆驼2.8.0熔丝-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&amp;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] mail                           INFO  Exchange[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=until 10:30 GMT when a second bulletin is available (Mon-Fri only), Host=localhost:9095, User-Agent=Mozilla/4.0 (compatible; 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, deflate, 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; boundary=---------------------------7dc3a8371906f6, CamelHttpUri=/fup, Cache-Control=no-cache, CamelHttpMethod=POST}, BodyType:String, Body:Dear Partner,

    please find attached the latest edition of our file. 

一个最小的例子Maven项目是在这里 ,战争是在这里 。 如果您在Eclipse或运行项目

mvn jetty:run

然后用形式的HTTP://本地主机:9095 /首要

你会得到一个“无法连接服务器”的例外。 但是,如果你部署战争到Tomcat您将得到缺少启动边界例外。 如果您编辑的applicationContext.xml和替换*与有效值,它实际上将发送电子邮件。

有任何想法吗?

Answer 1:

我曾尝试你的简化骆驼航线样品,将其与MVN码头运作良好:运行。

在我的Tomcat 7.0.27,Java 6中,它的实际工作。 邮件被发送正确的。 唯一的区别是,我不使用:

mvn install

而不是使用:

mvn package

然后复制目标/测试邮件0.0.1-SNAPSHOT.war到Tomcat的webapps文件夹,并启动tomcat(BIN / startup.sh或斌/的startup.bat)。

希望这对你的作品也是如此。

我是您选择相同的Tomcat的版本,因为我已经和遵循相同的步骤建议。

的问题,您应该其它来源:

  1. 检查你是否有环境变量CATALINA_HOME或CATALINA_BASE懵懵懂懂到你设置为指向其他Tomcat的安装。
  2. 此外,在环境变量,检查你的JRE_HOME或JAVA_HOME(使用JDK的时候),你的CLASSPATH变量的内容。 您应该将类​​路径设置为$ JAVA_HOME / JRE / lib目录下:$ JAVA_HOME / JRE / lib / ext目录:. 或%JAVA_HOME%/ JRE / lib中;%JAVA_HOME%/ JRE / lib / ext目录;. (最后的点是非常重要的)
  3. 与JRE_HOME替换JAVA_HOME / lib目录,如果你是在JRE只能运行。
  4. 您运行的是什么版本的JVM的。 我使用的是Oracle JDK 6.您是否使用了OpenJDK / J9或其他什么东西?


Answer 2:

我有一个工作解决我的问题,但没有回答我的问题。 我原来的路由集,每天都要工作我已经尝试过的方式,除了在Tomcat和不需要的Java代码(我自己)。

我已经采取了强力方法和移动码头产生attachement的身体,然后在路线后,将其移回附件。 它让我的东西我可以部署,但它一劈。

还在寻找一种方式来部署我原来的路线在Tomcat的6集。



文章来源: Missing start boundary Exception when sending messages with an attachment file in Tomcat