void MailMessageTest::testReadQP() { std::istringstream istr( "Content-Transfer-Encoding: quoted-printable\r\n" "Content-Type: text/plain\r\n" "Date: Thu, 1 Jan 1970 00:00:00 GMT\r\n" "From: [email protected]\r\n" "Subject: Test Message\r\n" "To: John Doe <*****@*****.**>\r\n" "\r\n" "Hello, world!\r\n" "This is a test for the MailMessage class.\r\n" "To test the quoted-printable encoding, we'll put an extra long line here. T=\r\n" "his should be enough.\r\n" "And here is some more =3Dfe.\r\n" ); MailMessage message; message.read(istr); assert (message.getSender() == "*****@*****.**"); assert (message.getContentType() == "text/plain"); assert (message.getContent() == "Hello, world!\r\n" "This is a test for the MailMessage class.\r\n" "To test the quoted-printable encoding, we'll put an extra long line here. This should be enough.\r\n" "And here is some more =fe.\r\n" ); }
void POP3ClientSession::retrieveMessage(int id, MailMessage& message, PartHandler& handler) { std::string response; sendCommand("RETR", NumberFormatter::format(id), response); if (!isPositive(response)) throw POP3Exception("Cannot get message list", response); DialogInputStream sis(_socket); MailInputStream mis(sis); message.read(mis, handler); while (mis.good()) mis.get(); // read any remaining junk }
void MailMessageTest::testReadMultiPart() { std::istringstream istr( "Content-Type: multipart/mixed; boundary=MIME_boundary_01234567\r\n" "Date: Thu, 1 Jan 1970 00:00:00 GMT\r\n" "From: [email protected]\r\n" "Mime-Version: 1.0\r\n" "Subject: Test Message\r\n" "To: John Doe <*****@*****.**>\r\n" "\r\n" "\r\n" "--MIME_boundary_01234567\r\n" "Content-Disposition: inline\r\n" "Content-Transfer-Encoding: 8bit\r\n" "Content-Type: text/plain\r\n" "\r\n" "Hello World!\r\n" "\r\n" "--MIME_boundary_01234567\r\n" "Content-Disposition: attachment; filename=sample.dat\r\n" "Content-Transfer-Encoding: base64\r\n" "Content-Type: application/octet-stream; name=sample\r\n" "\r\n" "VGhpcyBpcyBzb21lIGJpbmFyeSBkYXRhLiBSZWFsbHku\r\n" "--MIME_boundary_01234567--\r\n" ); StringPartHandler handler; MailMessage message; message.read(istr, handler); assert (handler.data().size() == 2); assert (handler.data()[0] == "Hello World!\r\n"); assert (handler.type()[0] == "text/plain"); assert (handler.disp()[0] == "inline"); assert (handler.data()[1] == "This is some binary data. Really."); assert (handler.type()[1] == "application/octet-stream; name=sample"); assert (handler.disp()[1] == "attachment; filename=sample.dat"); }
void MailMessageTest::testReadDefaultTransferEncoding() { std::istringstream istr( "Content-Type: text/plain\r\n" "Date: Thu, 1 Jan 1970 00:00:00 GMT\r\n" "From: [email protected]\r\n" "Subject: Test Message\r\n" "To: John Doe <*****@*****.**>\r\n" "\r\n" "Hello, world!\r\n" "This is a test for the MailMessage class.\r\n" ); MailMessage message; message.read(istr); assert (message.getSender() == "*****@*****.**"); assert (message.getContentType() == "text/plain"); assert (message.getContent() == "Hello, world!\r\n" "This is a test for the MailMessage class.\r\n" ); }
void MailMessageTest::testReadWriteMultiPart() { std::string msgin( "Content-Type: multipart/mixed; boundary=MIME_boundary_31E8A8D61DF53389\r\n" "Date: Thu, 1 Jan 1970 00:00:00 GMT\r\n" "From: [email protected]\r\n" "Mime-Version: 1.0\r\n" "Subject: Test Message\r\n" "To: John Doe <*****@*****.**>\r\n" "\r\n" "--MIME_boundary_31E8A8D61DF53389\r\n" "Content-Disposition: inline\r\n" "Content-Transfer-Encoding: 8bit\r\n" "Content-Type: text/plain\r\n" "\r\n" "Hello World!\r\n" "\r\n" "--MIME_boundary_31E8A8D61DF53389\r\n" "Content-Disposition: attachment; filename=sample.dat\r\n" "Content-ID: abcd1234\r\n" "Content-Transfer-Encoding: base64\r\n" "Content-Type: application/octet-stream; name=sample\r\n" "\r\n" "VGhpcyBpcyBzb21lIGJpbmFyeSBkYXRhLiBSZWFsbHku\r\n" "--MIME_boundary_31E8A8D61DF53389--\r\n" ); std::istringstream istr(msgin); std::ostringstream ostr; MailMessage message; message.read(istr); message.write(ostr); std::string msgout(ostr.str()); assert (msgout == msgin); }