Ejemplo n.º 1
0
  /**
   * 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);
  }
Ejemplo n.º 2
0
  /**
   * 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);
  }