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 POP3ClientSessionTest::testRetrieveMessages() { DialogServer server; server.addResponse("+OK POP3 Ready..."); server.addResponse("+OK USER"); server.addResponse("+OK PASS"); server.addResponse( "+OK Here comes the message\r\n" "From: [email protected]\r\n" "To: [email protected]\r\n" "Subject: test\r\n" "\r\n" "." ); server.addResponse( "+OK Here comes the message\r\n" "From: [email protected]\r\n" "To: [email protected]\r\n" "Subject: test\r\n" "\r\n" "Hello Jane,\r\n" "\r\n" "blah blah blah...\r\n" "....\r\n" "\r\n" "Yours, John\r\n" "." ); server.addResponse("+OK QUIT"); POP3ClientSession session("localhost", server.port()); session.login("user", "secret"); server.clearCommands(); MessageHeader header; session.retrieveHeader(1, header); std::string cmd = server.popCommand(); assert (cmd == "TOP 1 0"); assert (header.get("From") == "*****@*****.**"); assert (header.get("To") == "*****@*****.**"); assert (header.get("Subject") == "test"); MailMessage message; session.retrieveMessage(2, message); cmd = server.popCommand(); assert (cmd == "RETR 2"); assert (message.getContent() == "Hello Jane,\r\n" "\r\n" "blah blah blah...\r\n" "...\r\n" "\r\n" "Yours, John\r\n" ); session.close(); }
void send(const MailMessage& msg) { /// Just a skeleton. /// Assuming that there is a third party send /// API which is responsible for sending email. print( "Sender: " + msg.getSender() ); print("Recipients:"); MailMessage::Recipients recipients = msg.getRecipients(); for ( auto start = recipients.begin(); start != recipients.end(); ++start ) print( (*start).getAddress() ); print("Subject: " + msg.getSubject() ); print("Content: " + msg.getContent() ); }
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" ); }