/** * Erstellt eine DisplayMessageBean, die eine fehlerhafte Mail anzeigt. * * @param content Fehlerhafte Message * @param displayMessage Aktuelle DisplayMessageBean * @param displayParts List, in die die DisplayParts einsortiert werden. * @param inlineParts Map, in die die InlineParts gepackt werden. * @param multiparts Map, in die Multiparts gepackt werden. * @param e Exception, die beim Einlesen geflogen ist */ private static void assemblePartsForFaultySourceMessage( Message message, DisplayMessageModel displayMessage, List<Part> displayParts, Map inlineParts, Map multiparts, Exception e) throws MessagingException { // Alle vielleicht schon ansatzweise gefuellten Collections // zuruecksetzen displayParts.clear(); inlineParts.clear(); multiparts.clear(); // Part erstellen, der auf das Problem hinweist und den Quelltext // anfuegt. StringBuffer mt = new StringBuffer("Message faulty!\n\n"); mt.append("The requested messages is faulty because of this reason:\n"); mt.append(e.getMessage()).append("\n\n"); mt.append("This is the faulty source of the requested content:\n\n"); mt.append(displayMessage.getMessageSource()); // Info-Text-Message erstellen Message infoMessage = new MimeMessage((Session) null); infoMessage.setText(mt.toString()); // Info-Text-Message in die Display-Parts packen displayParts.add(infoMessage); }
/** * Setzt die Properties einen existierenden DisplayMessage-Objektes aus der uebergebenen * javax.mail.Message. * * @param displayMessage Bereits existierende Display-Message * @param content Message, aus der das DisplayMessage-Objekt gebaut werden soll. */ public static DisplayMessageModel refurbishGivenDisplayMessage( DisplayMessageModel displayMessage, Message message) throws MessageRetrieveException { displayMessage.setOriginMessage(message); // Parts aus der Message in eine flache ArrayList (DisplayParts) und // eine // HashMap (InlineParts) packen. Ausserdem die Parts von // Multipart-Objekten // in einer Map merken (Key: Multipart-Objekt / Value: List) List<Part> displayParts = new ArrayList<Part>(); Map<String, Part> inlineParts = new HashMap<String, Part>(); Map<Multipart, List<Integer>> multiparts = new HashMap<Multipart, List<Integer>>(); try { deflateMessageParts(message, displayParts, inlineParts, multiparts); } catch (Exception e) { try { assemblePartsForFaultySourceMessage( message, displayMessage, displayParts, inlineParts, multiparts, e); } catch (MessagingException me) { e.printStackTrace(); me.printStackTrace(); throw (new MessageRetrieveException("Konnte Message-Parts nicht beziehen", e)); } } displayMessage.setDisplayParts(displayParts); displayMessage.setInlineParts(inlineParts); displayMessage.setMultiparts(multiparts); return (displayMessage); }