0.17 2011-08-19
- Email parsing is now much more flexible, and throws fewer
exceptions. Ultimately, it's likely that Courriel will never throw an
exception from parsing, since email in the wild is often broken, and some
it's better to return something than just give up. Thanks to jwang of
grokbase.com for providing a corpus of broken messages to test against.
- The Courriel->plain_body_part() and ->html_body_part() methods ignore the case
of an attachment's mime type, per RFC 2045.
- The Courriel::ContentType->mime_type() method always returns a value in
lower case, but it preserves the original casing when constructing a header
value.
0.16 2011-07-21
- Add Courriel->from(), ->to(), and ->cc() methods.
- Skip another test which may fail on other people's machines, as
File::LibMagic does not return consistent results on all machines.
0.15 2011-06-28
- Skip a test which may fail on other people's machines, as File::LibMagic
does not return consistent results on all machines.
0.14 2011-06-25
- An email part with non-text content would still be treated as character data
rather than binary data, and its Content-Type header would end up with a
charset of us-ascii. This has been fixed, and now you must explicitly ask
for a charset in the Content-Type header when creating a
Courriel::ContentType object. Note that plain and html body parts created
via Courriel::Builder are unaffected, since these always default to UTF-8 as
the charset. Reported by ico. RT #69085.
- Added Courriel::ContentType->has_charset() and
Courriel::ContentType->is_binary() methods.
0.13 2011-06-20
- A multipart email build with Courriel::Builder would have a broken
Content-Type header, missing the required boundary attribute. Reported by
ico. RT #68694.
- If you explicitly passed unencoded content when creating a part (which
happens when using Courriel::Builder), that content would be modified so it
had CRLF line endings. Now, such content is left untouched. Reported by
ico. RT #68695.
- When passing encoded content to the Courriel::Part::Single constructor, the
constructor used to modify the content so it had CRLF line endings. Now it
is left alone.
- Note that if you're passing raw content to the Single constructor _and_
setting the transfer encoding to 7bit, 8bit, or binary, then you'll end up
with a noncomformant email. However, by default all raw content is base64
encoded. It is strongly recommended that you pass raw content and let
Courriel take care of the transfer encoding.
0.12 2011-06-07
[BUG FIXES]
- The value returned by Courriel::Part::Single->content() was not decoded to
Perl's native utf-8 character set. Similarly, when encoding content for
transfer, it was not first transformed to raw bytes.
0.11 2011-06-07
[BUG FIXES]
- Courriel::Builder now adds a "MIME-Version: 1.0" header to all emails it
creates unless you explicitly set this header, which you probably shouldn't,
since the only valid value is "1.0". This is a required header for MIME
emails per RFC2045.
0.10 2011-06-07
[BUG FIXES]
- When parsing an email, the encoding attribute for parts was not set
correctly, and ended up defaulting to 8bit for all parts. Now the encoding
is set based on the part's Content-Transfer-Encoding header.
0.09 2011-06-06
[NEW FEATURES]
- This distro now ships a plugin for Email::Abstract, meaning you can use
Courriel with Email::Sender.
0.08 2011-06-06
[API CHANGES]
- The content() and encoded_content() methods for Courriel::Part::Single now
return strings, rather than references. This makes the typical use
simpler. You can still get the reference directly by calling content_ref()
and encoded_content_ref().
[BUG FIXES]
- Make sure that any Content-ID header set via Courriel::Builder is formatted
properly (the id value should be wrapped in angle brackets).
0.07 2011-06-06
- Some tests were failing because File::LibMagic may return slightly different
results on different systems (application/x-perl versus text/x-perl).
0.06 2011-06-05
- Add missing test prereq on File::Slurp.
- The clone_without_attachments() method could end up setting the wrong
encoding when creating a new single part email.
0.05 2011-06-04
- The clone_without_attachments() method would die when calling on an email
that contained both plain and html inline parts.
0.04 2011-06-04
- Add missing prereq on File::LibMagic (needed since 0.02).
0.03 2011-06-04
- The encoding parameter is now always set in a part's headers.
0.02 2011-06-04
- Added all_parts_matching() method to Courriel class.
- Added clone_without_attachments() method to Courriel class.
- The Courriel::Part::Single attribute raw_content has been renamed as
encoded_content.
- The text_body_part() method is now called plain_body_part().
- The add() and unshift() methods in Courriel::Headers now accept only one
value.
- Added Courriel::Headers->replace as a convenience method.
- A header with attributes (like Content-Type) can escape values inside a
quoted string, like value="foo \" bar". Courriel wasn't unescaping these
values.
- It is now possible to pass a Courriel::Disposition object explicitly when
constructing a Courriel::Part::Single object. The docs said this was
possible in 0.01, but the parameter was just ignored.
- If a part is created with an explicit content_type and/or disposition
object, the part's headers will be updated so that the Content-Type and
Content-Disposition match the given object.
- The boundary for a Multipart part and the boundary in its ContentType's
attributes will always be the same.
- All classes now use MooseX::StrictConstructor.
- Some hacks to make it possible for Courriel to play nice with
Email::Abstract.
- Fixed some small doc errors.
0.01 2011-05-31
- First release upon an unsuspecting world.