Moin allerseits,
ich möchte gerne aus einer Message von java mail mir
a) Den Content, also Text / HTML speichern
b) Alle Attachments
Folgenden Code habe, es fehlt aber noch das Auslesen und speichern der Attachments
Speichern will ich das ganze am Besten als InputStream in meiner EmailMessageUtilClass - Klasse.
Also sowas wie:
List<InputStream> files
Wie müsste der Code ergänzt werden?
Kann hier jemand helfen?
ich möchte gerne aus einer Message von java mail mir
a) Den Content, also Text / HTML speichern
b) Alle Attachments
Folgenden Code habe, es fehlt aber noch das Auslesen und speichern der Attachments
Java:
public static EmailMessageUtilClass getTextFromMessage(Message message) throws MessagingException, IOException {
if (message == null)
return null;
EmailMessageUtilClass email = new EmailMessageUtilClass();
String result = "";
if (message.isMimeType("text/plain")) {
result = message.getContent().toString();
email.setPlainText(result);
} else if (message.isMimeType("multipart/*")) {
MimeMultipart mimeMultipart = (MimeMultipart) message.getContent();
email = getTextFromMimeMultipart(mimeMultipart, email);
}
return email;
}
public static EmailMessageUtilClass getTextFromMimeMultipart(MimeMultipart mimeMultipart,
EmailMessageUtilClass email) throws MessagingException, IOException {
if (mimeMultipart == null)
return null;
String result = "";
int count = mimeMultipart.getCount();
for (int i = 0; i < count; i++) {
BodyPart bodyPart = mimeMultipart.getBodyPart(i);
// Text
if (bodyPart.isMimeType("text/plain")) {
result = result + "\n" + bodyPart.getContent();
if (email.getPlainText() == null)
email.setPlainText(result);
email.setHtmlText(result);
// break; // without break same text appears twice in my tests
}
// HTML
else if (bodyPart.isMimeType("text/html")) {
String html = (String) bodyPart.getContent();
// result = result + "\n" + org.jsoup.Jsoup.parse(html).text();
result = html;
if (email.getPlainText() == null)
email.setPlainText(result);
email.setHtmlText(result);
}
// Attachment
else if (bodyPart.getContent() instanceof MimeMultipart) {
result = result + getTextFromMimeMultipart((MimeMultipart) bodyPart.getContent(), email);
if (email.getPlainText() == null)
email.setPlainText(result);
email.setHtmlText(result);
// Hier müssten die Attachments gespeichert werden?
}
}
return email;
}
Speichern will ich das ganze am Besten als InputStream in meiner EmailMessageUtilClass - Klasse.
Also sowas wie:
List<InputStream> files
Wie müsste der Code ergänzt werden?
Kann hier jemand helfen?