使用camel(Talend)存档java电子邮件
我的要求是,在阅读电子邮件后,我需要把它归档为PDF(目前,我们考虑纯文本,不包括图像中嵌入的文本)。p>下面是我从Talend ESB生成的代码路径(我认为这是解释的关键)
当我执行这个时
java.lang.IllegalStateException: Cannot read while there is an open stream writer
from(
"imaps://imap.gmail.com:993" + "?username=" + context.username
+ "&password=" + decryptedPassword_cMail_1
+ "&contentType=text/plain" + "&" + "peek" + "=true"
+ "&" + "handleFailedMessage" + "=true" + "&"
+ "skipFailedMessage" + "=true" + "&"
+ "mapMailMessage" + "=true")
.routeId("WriteAsPDF_cMail_1")
.process(new org.apache.camel.Processor() {
public void process(org.apache.camel.Exchange exchange)
throws Exception {
Map<String, Object> map = new java.util.HashMap<String, Object>();
map = exchange.getIn().getHeaders();
for (String name : map.keySet()) {
String key = name.toString();
String value = map.get(name).toString();
System.out.println(key + " " + value);
}
String M_Body = exchange.getIn().getBody().toString();
org.apache.pdfbox.pdmodel.PDDocument document = new org.apache.pdfbox.pdmodel.PDDocument();
org.apache.pdfbox.pdmodel.PDPage page = new org.apache.pdfbox.pdmodel.PDPage();
document.addPage(page);
org.apache.pdfbox.pdmodel.font.PDFont pdfFont = org.apache.pdfbox.pdmodel.font.PDType1Font.HELVETICA_BOLD;
org.apache.pdfbox.pdmodel.PDPageContentStream contentStream = new org.apache.pdfbox.pdmodel.PDPageContentStream(
document, page);
contentStream.beginText();
contentStream.setFont(pdfFont, 12);
contentStream.moveTextPositionByAmount(100, 700);
contentStream.drawString(M_Body);
document.save("C:/Hari/poller/zipper/BlankPage.pdf");
contentStream.close();
document.close();
}
}).id("WriteAsPDF_cProcessor_1");
}
============================================
例外情况详情:
[WARN ]: org.apache.camel.component.mail.MailConsumer - Exchange failed, so rolling back message status: Exchange[MailMessage@0xcdf6432] java.lang.IllegalStateException: Cannot read while there is an open stream writer at org.apache.pdfbox.cos.COSStream.createRawInputStream(COSStream.java:129) at org.apache.pdfbox.pdfwriter.COSWriter.visitFromStream(COSWriter.java:1177) at org.apache.pdfbox.cos.COSStream.accept(COSStream.java:372) at org.apache.pdfbox.pdfwriter.COSWriter.doWriteObject(COSWriter.java:561) at org.apache.pdfbox.pdfwriter.COSWriter.doWriteObjects(COSWriter.java:490) ... ..... .. .. [ERROR]: org.apache.camel.processor.DefaultErrorHandler - Failed delivery for (MessageId: ID-EINLW2ABC-60843-1468402879061-0-1 on ExchangeId: ID-EINLW2ABC-60843-1468402879061-0-2). Exhausted after delivery attempt: 1 caught: java.lang.IllegalStateException: Cannot read while there is an open stream writer
我确实检查了其他类似的问题,但我找不到能帮助我解决问题的方法
共 (0) 个答案