/** * 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()); }
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; } }
@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()); }
@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()); }
/** 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()); }
@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()); }
/** 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()); }