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 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.