コード例 #1
0
  /**
   * Tests that the implementation can handle body lines that don't contain hard line breaks when
   * decoded.
   */
  @Test
  public void decodeBase64WithShortBodyLines() throws IOException {
    File messageFile = new File(msgDir, "0");
    messageFile.createNewFile();

    PrintWriter pw = new PrintWriter(messageFile);
    pw.print("Content-Transfer-Encoding: base64\r\n");
    pw.print("Content-Type: text/plain; charset=us-ascii\r\n");
    pw.print("\r\n");
    pw.print("VGVzdCBtZXNz\r\n");
    pw.print("YWdlLCBsaW5l\r\n");
    pw.print("IDENClRlc3Qg\r\n");
    pw.print("bWVzc2FnZSwg\r\n");
    pw.print("bGluZSAyDQpU\r\n");
    pw.print("ZXN0IG1lc3Nh\r\n");
    pw.print("Z2UsIGxpbmUg\r\n");
    pw.print("Mw0K\r\n");
    pw.close();

    MailMessage msg = new MailMessage(messageFile, 0);
    BufferedReader reader = msg.getBodyReader();

    assertEquals("Test message, line 1", reader.readLine());
    assertEquals("Test message, line 2", reader.readLine());
    assertEquals("Test message, line 3", reader.readLine());
    assertEquals(null, reader.readLine());
  }
コード例 #2
0
ファイル: MessageToadlet.java プロジェクト: zidel/Freemail
  private void addMessageContents(HTMLNode messageNode, MailMessage message) {
    HTMLNode messageContents =
        messageNode.addChild("div", "class", "message-content").addChild("p");

    try {
      BufferedReader body = message.getBodyReader();
      try {
        String line = body.readLine();
        boolean added = false;
        while (line != null) {
          if (added) messageContents.addChild("br");
          messageContents.addChild("#", line);
          added = true;
          line = body.readLine();
        }
      } finally {
        body.close();
      }
    } catch (IOException e) {
      // TODO: Better error message
      messageContents.removeChildren();
      HTMLNode errorBox = addErrorbox(messageContents, "Couldn't read message");
      errorBox.addChild("p", "Couldn't read the message: " + e);
      return;
    }
  }
コード例 #3
0
  @Test
  public void decodeQpAndIso8859_1MessageBody() throws IOException {
    File messageFile = new File(msgDir, "0");
    messageFile.createNewFile();

    PrintWriter pw = new PrintWriter(messageFile);
    pw.print("Content-Transfer-Encoding: quoted-printable\r\n");
    pw.print("Content-Type: text/plain; charset=iso-8859-1\r\n");
    pw.print("\r\n");
    pw.print("Test message (=E6=F8=E5), line 1\r\n");
    pw.close();

    MailMessage msg = new MailMessage(messageFile, 0);
    BufferedReader reader = msg.getBodyReader();

    assertEquals("Test message (æøå), line 1", reader.readLine());
    assertEquals(null, reader.readLine());
  }
コード例 #4
0
  @Test
  public void decodeBase64AndAsciiMessageBody() throws IOException {
    File messageFile = new File(msgDir, "0");
    messageFile.createNewFile();

    PrintWriter pw = new PrintWriter(messageFile);
    pw.print("Content-Transfer-Encoding: base64\r\n");
    pw.print("Content-Type: text/plain; charset=us-ascii\r\n");
    pw.print("\r\n");
    pw.print("VGVzdCBtZXNzYWdlLCBsaW5lIDENClRlc3QgbWVzc2FnZSwgbGluZSAyDQo=");
    pw.close();

    MailMessage msg = new MailMessage(messageFile, 0);
    BufferedReader reader = msg.getBodyReader();

    assertEquals("Test message, line 1", reader.readLine());
    assertEquals("Test message, line 2", reader.readLine());
    assertEquals(null, reader.readLine());
  }
コード例 #5
0
  /** Tests reading of messages without the extra MIME headers */
  @Test
  public void readPlainRFC822Message() throws IOException {
    File messageFile = new File(msgDir, "0");
    messageFile.createNewFile();

    PrintWriter pw = new PrintWriter(messageFile);
    pw.print("\r\n");
    pw.print("Test message, line 1\r\n");
    pw.print("Test message, line 2\r\n");
    pw.print("Test message, line 3");
    pw.close();

    MailMessage msg = new MailMessage(messageFile, 0);
    BufferedReader reader = msg.getBodyReader();

    assertEquals("Test message, line 1", reader.readLine());
    assertEquals("Test message, line 2", reader.readLine());
    assertEquals("Test message, line 3", reader.readLine());
    assertEquals(null, reader.readLine());
  }
コード例 #6
0
  @Test
  public void decodeBase64AndUtf8MessageBody() throws IOException {
    File messageFile = new File(msgDir, "0");
    messageFile.createNewFile();

    PrintWriter pw = new PrintWriter(messageFile);
    pw.print("Content-Transfer-Encoding: base64\r\n");
    pw.print("Content-Type: text/plain; charset=utf-8\r\n");
    pw.print("\r\n");
    pw.print("VGVzdCBtZXNzYWdlICjDpiksIGxpbmUgMQ0KVGVzdCBt\r\n");
    pw.print("ZXNzYWdlICjDpiksIGxpbmUgMg0K\r\n");
    pw.close();

    MailMessage msg = new MailMessage(messageFile, 0);
    BufferedReader reader = msg.getBodyReader();

    assertEquals("Test message (æ), line 1", reader.readLine());
    assertEquals("Test message (æ), line 2", reader.readLine());
    assertEquals(null, reader.readLine());
  }
コード例 #7
0
  /** Charsets that are unsupported should cause the Reader to return the raw content. */
  @Test
  public void decodeUnsupportedCharset() throws IOException {
    File messageFile = new File(msgDir, "0");
    messageFile.createNewFile();

    PrintWriter pw = new PrintWriter(messageFile);
    pw.print("Content-Transfer-Encoding: quoted-printable\r\n");
    pw.print("Content-Type: text/plain; charset=unsupported\r\n");
    pw.print("\r\n");
    pw.print("Test message, line 1\r\n");
    pw.print("Test message, line 2\r\n");
    pw.print("Test message, line 3");
    pw.close();

    MailMessage msg = new MailMessage(messageFile, 0);
    BufferedReader reader = msg.getBodyReader();

    assertEquals("Test message, line 1", reader.readLine());
    assertEquals("Test message, line 2", reader.readLine());
    assertEquals("Test message, line 3", reader.readLine());
    assertEquals(null, reader.readLine());
  }