我正在研究可以通過郵件發送EDIFACT消息的應用程序。 發送和接收郵件沒有問題,接收EDIFACT消息(由另一個應用程序發送)也適用。創建一個mimetype的javax.mail消息:application/EDIFACT
EDIFACT是送企業對企業信息的標準(發票爲例)
郵件具有這樣的結構:
Message-ID: [email protected]
From: EDI-berichten <[email protected]>
Date: Wed, 10 Nov 2010 08:10:57
To: <[email protected]>
Subject: INVOIC;SRC
MIME-VERSION: 1.0
Content-type: application/EDIFACT;
name=message.edi
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="message.edi"
X-OriginalArrivalTime: 10 Nov 2010 07:13:29.0843 (UTC) FILETIME=[C6CCD430:01CB80A6]
X-Virus-Scanned: clamav-milter 0.96.4 at pilot
X-Virus-Status: Clean
在這裏你可以找到EDIFACT規格:http://www.faqs.org/rfcs/rfc1767.html
常您通過創建一個MimeMultipart發送一個附件,並添加一個文本和一個附件到這個。 但是,edifact消息沒有消息部分,只是附件。
,當我在附件部分添加到內容,就像這樣:
MimeBodyPart attachBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(fileAttach);
attachBodyPart.setDataHandler(new DataHandler(source));
attachBodyPart.setFileName(source.getName());
msg.setContent(attachBodyPart, "application/EDIFACT");
我得到這個錯誤:
javax.mail.MessagingException: IOException while sending message;
nested exception is:
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type application/EDIFACT
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:930)
等等 最後這一點:
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type application/EDIFACT
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:877)
at javax.activation.DataHandler.writeTo(DataHandler.java:302)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1383)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1743)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:888)
有沒有人有任何創建像這樣的消息的經驗,或者如何創建消息韓應用程序/ EDIFACT類型的dler嗎?
在接收電子數據交換消息和附件保存我也是這個問題是不是在默認方式來保存附件,使用:
mp = (Multipart)message.getContent();
BodyPart part = mp.getBodyPart(i);
part.getInputStream()
我不得不用這個代替(添加此信息,因爲這可能是一個領先的解決方案):
SharedByteArrayInputStream sbaIs = (SharedByteArrayInputStream)message.getContent()
**編輯2013年3月18日**
在這裏我的問題的最低限度的反應是有原因的推測出來myse最後,我把它變成了一個開源的項目。它對一些開發者來說已經很有用了。
所以一看:使用並請提供相關反饋:https://github.com/iamit/IAmEdifact
IAm接近解決方案。 – 2010-11-19 16:09:43
谷歌搜索沒有給我一個asnwer,無論這個論壇(迄今):所以我開始了這種問題的網站,在那裏人們可以找到這是如何工作的:https://sites.google.com/site/edifact4java /家(根據我自己的研究) – 2010-11-19 16:10:50