- Flexible parsing of charset names (#85).
- Fixed parsing of address names containing @ (#80)
- Fixed
quoted_printable_decode
external function (not used by mail-parser directly). - Fix
Received
header serialization for bincode compatibility.
- Fixed panic when Content-Disposition is empty (#63)
- Removed
content_type()
andaddress()
functions that couldpanic!
. Useas_content_type()
andas_address()
instead. - Updated Rust edition to 2021.
This version introduces multiple breaking changes. Please read the following notes carefully.
- Parsing is now done using
MessageParser
, which allows to customize the parsing process. - Added parser for
Received
headers. - Added
MessageParser::parse_headers
function to parse only the headers of a message. - Removed
RfcHeader
enum, now all headers are represented usingHeaderName
. - All address types are now stored in the
HeaderValue::Address
variant using theAddress
enum. - Renamed the
as_
prefix toto_
in some functions.
- Fix: Parsing address name with \ characters (#41)
- Fix: Missing space when folded header begins with RFC2047 word (#43)
- Added
raw_message()
function.
- Removed get_() prefixes (#31).
- Maildir import: Use modified time instead of created time (#32)
- Base64/QuotedPrintable decoding optimizations.
- Automatic parsing of base64/qp encoded nested messages.
- Refactoring or
MessageStream
to use iterators more efficiently. - Added "ludicrous mode" Cargo option to use some unsafe code for additional performance.
- Fixed support for empty messages.
- Fixed raw offsets of multipart/* parts to include MIME epilogue.
- Fixed values of non-RFC headers.
- Support for malformed unstructured fields containing encoded words (#29).
- Add support for gb2312 charsets (#30).
- Maildir parsing support.
- Headers and attributes are now stored in a
Vec
instead of aHashMap
for a tiny performance enhancement. - Support for Content-Type attributes spanning multiple lines.
- Support for malformed Thunderbird messages (#27).
- Fixed raw offset range for body parts.
Message
headers are now stored as aMessagePart
with index 0.- Improved
MessagePart
API. - Nested base64/quoted-printable encoded message/rfc822 parts are automatically parsed when calling
get_message
. - Better handling of malformed MIME messages.
- Added raw offsets to MIME parts.
- get_bytes_to_boundary fix (#21)
- Retrieving message headers in order (#19)
- Added
get_raw_headers
andget_header
methods. - Added
get_return_address
method to obtain the return address from the Return-Path or From headers. - Support for malformed Return-Path headers.
- Support for ks_c_5601 charsets (#20)
- DateTime is_valid() fix (#15)
- DateTime to UNIX timestamp conversion.
- Ord, PartialOrd support for DateTime (#13).
- Fixed Message::parse() panic on duplicate Content-Type headers (#14).
- Support for multi-line headers.
- Text and HTML message body preview.
- Improved support for raw headers.
- Mbox file parsing support (issue #11) conforming to the QMail specification.
- Support for bincode serialize/deserialize.
- Added
Message::get_thread_name()
to obtain the base subject of a message as defined in RFC 5957 - Internet Message Access Protocol - SORT and THREAD Extensions (Section 2.1). - Added
MimeHeader::get_attachment_name
for simplified access to a MIME attachment file name.
- Lazy parsing of nested e-mail messages.
- Support for base64/quoted-printable nested messages.
- Lazy conversion to/from HTML an plain text parts.
- Improved API.
- Parts are now generics.
- Support for non-standard headers.
- Raw message offsets are stored in the message object.
- Message body structure is now stored in the message object.
- Improved API, now
Message::parse
returnsOption<Message>
to indicate when parsing was successful. - Headers are now stored internally in a
HashMap
instead ofstruct
fields. - Added support for new RFCs:
- Performance enhacements, now mail-parser is almost as fast as the
unsafe
0.1 version.
- Re-factoring to use 100% safe Rust after a discussion on Reddit.
- Added
Message::is_empty
.
- Bug-fixing after fuzzing the library.
- Initial release with plenty of
unsafe
code to speed things up.