Je travaille sur une application qui peut envoyer des messages EDIFACT par mail. L'envoi et la réception de courrier ne pose aucun problème, la réception d'un message EDIFACT (envoyé par une autre application) fonctionne également.Créer un message javax.mail de type mime: application/EDIFACT
EDIFACT est une norme pour envoyer des affaires à l'information d'affaires (factures par exemple)
Le courrier a cette structure:
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
ici vous trouverez les spécifications EDIFACT: http://www.faqs.org/rfcs/rfc1767.html
Normalement vous envoyez une pièce jointe en créant un MimeMultipart et ajoutez un texte et une pièce attachée à ceci. Le message edifact n'a cependant pas de partie de message, juste la pièce jointe.
quand j'ajoute la partie de fixation au contenu, comme ceci:
MimeBodyPart attachBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(fileAttach);
attachBodyPart.setDataHandler(new DataHandler(source));
attachBodyPart.setFileName(source.getName());
msg.setContent(attachBodyPart, "application/EDIFACT");
Je reçois cette erreur:
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)
etc ... et enfin ceci:
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)
Est-ce que quelqu'un a de l'expérience dans la création d'un message comme celui-ci, ou comment créer un message dler pour une application de type/EDIFACT?
En recevant un message EDIFACT et enregistrer la pièce jointe que j'avais aussi le problème ce n'est pas de la manière par défaut pour enregistrer une pièce jointe, en utilisant:
mp = (Multipart)message.getContent();
BodyPart part = mp.getBodyPart(i);
part.getInputStream()
je devais utiliser ce lieu (ajouter cette info, parce que il pourrait être une avance à la solution):
SharedByteArrayInputStream sbaIs = (SharedByteArrayInputStream)message.getContent()
** EDIT ** 18 mars 2013
la réponse minimale à ma question ici était une raison de le comprendre myse J'ai fini par en faire un projet open source. c'était déjà utile à certains développeurs.
donc un coup d'oeil: utiliser et faire plaisir commentaires à ce sujet: https://github.com/iamit/IAmEdifact
IAm proche d'une solution. –
Googling n'a pas obtenu de réponse, ni ce forum (pour l'instant): alors j'ai commencé un site pour ce genre de problème, où les gens peuvent trouver comment cela fonctionne: https://sites.google.com/site/edifact4java/home (basé sur mes propres recherches) –