1

ここで何度も報告されている問題に直面していますが、これまでのところ解決策はありません。

ルートはかなり単純なものです。特定の件名の電子メールを待ち、メール内のパラメーターから PDF を作成し、この PDF を送信者にメールで送り返します。

Eclipse 内で Junit テスト ケースとしてルートを開始すると魅力的に動作しますが、Linux サーバーの Tomcat で実行すると、「javax.mail.MessagingException: Missing start boundary」でメールを送信しようとするとクラッシュします。 PDFの添付ファイル。

*) ローカル テスト環境: Tomcat 8.0.5、Windows 7、Java 1.8.0_20、Camel 2.14.0

*) サーバー環境: Tomcat 8.0.12、Ubuntu Server 14.0.1。LTS、Java 1.8.0_20、キャメル 2.14.0

*) 私がすでに試したこと: - 新しいバージョンの mail.jar を使用する (現在の Camel バージョンにアップグレードすることにより) - mail.jar、activation.jar を Tomcat lib に入れる - さまざまな mail.mime.multipart.XXX プロパティを設定する すべて異なるバージョンと組み合わせで => 成功しません。

ルートのコードの下に、プロセッサとスタック トレースがあります。実際、このルートには目を見張るものはありません...

何か案は???

ルート:

from("imap://XXXXXXXXXXXXXXXX?" +
        "host=XXXXXXXXXXXXXXXXX&" +
        "password=XXXXXXXXXX&" +
        "delete=true&" +                    
        "consumer.delay=12000&" +           
"searchTerm.subjectOrBody=XXXXXXXXXXXXXXXXX&" + 
        "searchTerm.unseen=true"        
    )
.routeId(ROUTE_ID)
.process(attachmentProcessor)

.setHeader("to", simple("${in.header.from}")) 
.setHeader("from", simple("XXXXXXXXXXXXXXXXX"))
.setHeader("subject", simple("XXXXXXXXXXXXXXXXX"))
.setBody(simple("XXXXXXXXXXXXXXXX"))
.to("smtp://XXXXXXXXXXXXXXXXX")
.log(mailMessage);
;

プロセッサの一部:

pdfUtil.generateLabels(tempDirPath, year, sequenceNumberStart, numberOfPages);
  exchange.getIn().addAttachment(fileName, new DataHandler(new FileDataSource(tempDirPath)));    

恐ろしい例外... :-(

javax.mail.MessagingException: Missing start boundary
        at javax.mail.internet.MimeMultipart.parsebm(MimeMultipart.java:882)
        at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:503)
        at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:417)
        at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1354)
        at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021)
        at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419)
        at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1354)
        at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2107)
        at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2075)
        at org.apache.camel.component.mail.DefaultJavaMailSender.send(DefaultJavaMailSender.java:118)
        at org.apache.camel.component.mail.MailProducer.process(MailProducer.java:56)
        at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
        at org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:143)
        at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:307)
        at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:138)
        at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
        at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:105)
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:87)
        at org.apache.camel.component.mail.MailConsumer.processExchange(MailConsumer.java:287)
        at org.apache.camel.component.mail.MailConsumer.processBatch(MailConsumer.java:213)
        at org.apache.camel.component.mail.MailConsumer.poll(MailConsumer.java:119)
        at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:187)
        at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:114)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
4

2 に答える 2

1

私はこの正確な問題を抱えていました。この問題は、メールを送信しようとしたときに SMTP サーバーを混乱させる交換 (境界、MIME タイプなど) の受信メッセージに設定された受信 imap ヘッダーが原因でした。

では、結果の本文の代わりにメッセージをattachmentProcessor使用します。これにより、コンポーネントから IMAP からすべてのヘッダーなどを削除する新しいメッセージが作成されますOutin

例えば:

       .process(new Processor() {   
            @Override
            public void process(Exchange exchange) throws Exception {
                exchange.getOut().setBody("here's the resulting message");
            }
        })
于 2015-01-27T23:02:56.073 に答える
1

可能な解決策:

お役に立てば幸いです。

于 2014-11-17T19:43:28.607 に答える