Domanda

Sto lavorando su un'applicazione in grado di inviare messaggi EDIFACT per posta. La posta invio e la ricezione non è un problema, la ricezione di un messaggio EDIFACT (invio da un'altra applicazione) funziona pure.

EDIFACT è uno standard per inviare business to business information (fatture per esempio)

La posta ha questa struttura:

Message-ID: 20101110081058.CLOCKT..SRC.SRCNUMBER.edi01@SENDER.DOMAIN.com
From: EDI-berichten <edi01@SENDER.DOMAIN.com>
Date: Wed, 10 Nov 2010 08:10:57
To: <ekt@DOMAIN.nl>
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

qui potete trovare le specifiche EDIFACT: http://www.faqs.org/rfcs/ rfc1767.html

Normalmente si invia un allegato con la creazione di un MimeMultipart e aggiungere un testo e un allegare parte a questo. Il messaggio EDIFACT tuttavia, non dispone di una parte del messaggio, solo l'allegato.

quando aggiungo la parte di attacco al contenuto, in questo modo:

MimeBodyPart attachBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(fileAttach);
attachBodyPart.setDataHandler(new DataHandler(source));
attachBodyPart.setFileName(source.getName());
msg.setContent(attachBodyPart, "application/EDIFACT");

ottengo questo errore:

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)

ecc ... e, infine, in questo modo:

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)

Qualcuno ha alcuna esperienza nella creazione di un messaggio come questo, o come creare un gestore di messaggi per un tipo come application / EDIFACT?

In ricezione di un messaggio EDIFACT e salvare l'allegato ho avuto anche il problema non è nel modo di default per salvare un allegato, utilizzando:

mp = (Multipart)message.getContent();
BodyPart part = mp.getBodyPart(i);
part.getInputStream()

Ho dovuto usare questo invece (l'aggiunta di queste informazioni, perché potrebbe essere un vantaggio per la soluzione):

SharedByteArrayInputStream sbaIs = (SharedByteArrayInputStream)message.getContent()

** EDIT 18 mar 2013 **

La risposta minima alla mia domanda qui è stato un motivo per capirlo myselve, e alla fine ce l'ho fatta una fonte porject aperta. è già stato utile per alcuni sviluppatori.

Quindi, avere uno sguardo: utilizzo e feedback si prega su di esso: https://github.com/iamit/IAmEdifact

È stato utile?

Soluzione

Ieri molto tardi ho contratto Fine sulla soluzione del problema descibed sopra. Non riuscivo a trovare una adeguata risposta anyweher su internet. Così ho creato una pagina con passi di come fare questo (documentazione non è del tutto finito, ma lo sarà presto)

Il sito: https://sites.google.com/site/edifact4java/home

In breve, quello che dovete fare questo:

  1. Aggiungi un DHC (DataContentHandler) per il MailcapCommandMap
  2. Crea un DataContentHandler per il mime-type application / EDIFACT
  3. Crea un MimePart personalizzato per application / EDIFACT
  4. Crea un DataHandler per un file EDIFACT o il messaggio
  5. Crea un messaggio interfaccia per messaggi EDIFACT

E mettere insieme tutto questo, e funziona ..... !!

Un lungo puzzle, è per questo che prendo lo sforzo che documenta su un sito. Speriamo che qualcuno, un giorno può fare la sua / il suo profitto con esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top