In rough priority order...but please let me know if something you need is missing. = FIXME - StreamHandler should get preamble_begin and preamble_end callbacks. Same for epilogue_begin, epilogue_end. = STOLEN - Header continuation issue: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=504152&group_id=5470 - Subject: =?ISO-8859-1?Q?=24=A3_Kills_IRB?= = Documentation - Make it clear that all strings the library works with are the ASCII strings that are part of the RFC2822 message -- not strings in any other charset. - Update Intro.txt, write MIME.txt and other Guides. = Features - RFC2231 http://mail.python.org/pipermail/email-sig/2003-November/000032.html - Smart handling of charset issues for text/ types. [Goal] allow setting the body part to a given piece of data, and RMail handles setting the appropriate MIME headers. This requires the data to have a known charset. Maybe this plays into the encoding solution below. - Base64 and quoted-printable encoding [Goal] allow setting the body part to a given piece of data, and RMail handles setting the appropriate MIME headers and possibly quoted-printable or base64 transcoding it if appropriate. This may be best done by introducing an RMail::TransferEncodedString class that knows whether it is transcoded as binary, quoted-printable, base64, etc. You would set RMail::Message#body to a TransferEncodedString and RMail::Message would set the appropriate MIME headers. If at serialization time the message body were set to a plain String, then RMail::Message would transcode it into base64. - An RMail::Message#attach method that takes care of setting content-disposition, etc. - Header folding in RMail::Header. - A small wrapper around Net::SMTP#send_mail that takes care of: - parsing recipients out of the various message headers - deleting the Bcc: header - sending the message - Provide a way to parse just the message headers, leaving the rest in the input stream (for use by RubyFilter). This also implies a feature that parses a message body given a RMail::Header object and an input stream. This should be easy -- read line by line until you get an empty line or EOF, then pass that off to parse_header as a string to be parsed. Parsing the body can just use a PushbackReader. - Handle different end of line terminators everywhere (for both parsing and generating). - Provide some way when parsing a message to start spooling to disk for really large messages. This would be easy to do depending on how message body transparency is implemented. - MIME charset support in header fields and message bodies. This requires m18n support in ruby, so it won't be coming soon. - Maildir parsing. - Simplify the Parser such that the class used to hold the parse result can be easily changed and so the memory used can be minimized. The idea is to support "bogofilter" style parsing where the data of the parse is immediately processed and thrown away but the structure and content of the parsed message is important. This may require extensions to header parsing, where things like the important MIME header fields can be parsed without creating a whole RMail::Header object. = Minor Features - Untainting of email addresses. See Perl's CGI::Untaint::email. - Parser for Received: headers. See Perl's Mail::Field::Received. = Documentation Tasks - A "howto" like documentation. - How to write out a base64 encoded MIME part to a file. - How to parse a unix MBOX file. - MIME operations (see RFC2047) - Character sets in message bodies - Non-textual message bodies - Multi-part message bodies - Textual header information in character sets other than US-ASCII. - Go through every class and make sure the methods are sorted in a sensible order so the RDoc output is nice.