Hallo Martin
Mit "einspeisen" meinte ich, dass ich einen "Mail-In Database" Eintrag (Dokument) erstellt habe, der mir Emails, die an eine darin definierte Email adressiert sind an die definierte Datenbank schickt und aus dieser Email ein Dokument mit der Form "Memo" in der Datenbank erstellt.
In diesem Dokument befinden sich nun vier Body-Felder mit folgendem Inhalt:
Body-Feld-1:
"Content-Type: multipart/mixed;
boundary="----=_Part_1050_33530222.1331648857364"
"
Body-Feld-2:
"------=_Part_1050_33530222.1331648857364
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;charset=iso-8859-1
<CustomerEmail>
<Application>CF</Application>
<To>hans.Muster@test.com</To>
<Subject>Ich bin das Subject</Subject>
<Body><br><br>Anbei der Kommentar zur offenen Frage zum Thema Rechnungstell=
ung.
Beste Gr=FCsse<br><br></Body>
<MailTime>TimeStamp</MailTime>
</CustomerEmail>"
Body-Feld-3:
"
------=_Part_1050_33530222.1331648857364
Content-Type: audio/x-wav;
name=Voice-File-33.wav
Content-Disposition: attachment;
filename=Voice-File-33.wav
Content-Transfer-Encoding: base64
Voice-File-33.wav"
Body-Feld-4:
"
------=_Part_1050_33530222.1331648857364--
"
Aus diesen Angaben, die im XML verpackt sind, muss ich nun ein neues Email zusammenstellen und weiterschicken. Das Problem ist jetzt, wie ich auch den Codierten Umlauten und "Zeilenenden" den korrekten Text bekomme.
Gruss und Dank
Hampa
Hallo zusammen
Ich habe mich heute morgen gleich ans Umsetzen des Tipps von Roland gemacht und meinen Java-Code geöffnet und... ich war schon einwenig enttäuscht. Entäuscht deshalb, weil ich im Code diese beiden Befehl vorfand. Ich füge mal den Code ein, vielleicht sieht jemand den Fehler der dazu führt, dass auch =FC kein ü wird. :-:
try {
// Parse the XML body of the mail message.
// Do not convert MIME to rich text
s.setConvertMIME(false);
MIMEEntity mime = docSourceEmail.getMIMEEntity();
if (mime != null) {
// DecodeContent
mime.decodeContent();
mime.encodeContent(MIMEEntity.ENC_NONE);
// If multipart MIME entity
if (mime.getContentType().equals("multipart")) {
// Read content of each child entity
MIMEEntity child1 = mime.getFirstChildEntity();
if (child1 != null) {
sTmpBodyText = child1.getContentAsText();
}
} else {
// If not multipart, just print content
sTmpBodyText = mime.getContentAsText();
}
} else {
throw new ParserException("[parseXMLBody] Keine gültige XML-Message vorhanden.");
}
// <br>-Varianten durch CRLF ersetzen
sBodyText = sTmpBodyText.replaceAll("<br>|<br\\>|<br \\>", "\r\n");
// Aus dem RichTextFeld die XML-Message "herausschälen"
// Bestehende Item "BodyText" löschen
if (docSourceEmail.hasItem("BodyText")) {
docSourceEmail.removeItem("BodyText");
}
// Neues NotesItem auf dem Dokument erstellen.
RichTextItem inBodyText = docSourceEmail.createRichTextItem("BodyText");
// Start und End-Position der XML-Message feststellen
logger.debug("Unformatted Text from Body: " + sBodyText);
int iStartPos = sBodyText.indexOf("<CustomerEmail>");
logger.debug("[SMCUtils.parseXMLBody] Startposition <CustomerEmail>: " + iStartPos);
int iEndPos = sBodyText.indexOf("</CustomerEmail>");
logger.debug("[SMCUtils.parseXMLBody] Startposition </CustomerEmail>: " + iEndPos);
// Prüfen, ob eine gültige XML-Message vorhanden ist.
if ((iStartPos < 0 || iEndPos < 0) || (iStartPos > iEndPos)) {
throw new ParserException("[parseXMLBody] Keine gültige XML-Message vorhanden.");
}
// XML-Message aus dem gesamten Body herausschneiden
String sTmpBodyXMLMessage = sBodyText.substring(iStartPos, iEndPos + 16);
logger.debug("[SMCUtils.parseXMLBody] XML-Message (Trim): " + sTmpBodyXMLMessage);
// XML-Message in neues Item abfüllen
inBodyText.appendText(sTmpBodyXMLMessage.trim());
// Document speichern
docSourceEmail.save();
.......
Gruss und Dank
Hampa
Hallo zusammen
Ich habe mich heute morgen gleich ans Umsetzen des Tipps von Roland gemacht und meinen Java-Code geöffnet und... ich war schon einwenig enttäuscht. Entäuscht deshalb, weil ich im Code diese beiden Befehl vorfand. Ich füge mal den Code ein, vielleicht sieht jemand den Fehler der dazu führt, dass auch =FC
Aber klar doch.... ;D
....
// Read content of each child entity
MIMEEntity child1 = mime.getFirstChildEntity();
if (child1 != null) {
sTmpBodyText = child1.getContentAsText();
}
child1 will auch noch dekodiert werden.
Gruß
Roland