- Do not return invalid mime parts when parsing broken nested messages.
- Fix broken receive header date parsing when tab is used in long header syntax (#130)
- Fix
DateTime::from_timestampto handle negative timestamps correctly.
rkyvzero-copy deserialization support.- Changed
usizetou32types. - Renamed
serde_supportfeature toserde. - Fix: Parsing of headers without LFs (#102)
- Fixed
HeaderNameenum order to avoid breaking bincode serialization.
- Fixed
HeaderName::parsefunction.
- Perfect hashing using
hashifycrate rather than staticgperfgenerated code. - Added
DkimSignature,ArcAuthenticationResults,ArcMessageSignatureandArcSealheaders. HeaderNameis non-exhaustive.- Parse obsolete timezones (#95).
- Fix: Folding ws between "Content-Type:" and "plain/text" leads to empty header (#96).
- Fix: Multiline quoted continuations (closes #92).
- Fix: Deserialize (#93).
- Retain mbox IO errors (#91).
- Hide concrete type behind impl type (#94).
- Removed
ludicrousfeature, the Rust compiler is smart enough to optimize array lookups.
- Flexible parsing of charset names (#85).
- Fixed parsing of address names containing @ (#80)
- Fixed
quoted_printable_decodeexternal function (not used by mail-parser directly). - Fix
Receivedheader 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
Receivedheaders. - Added
MessageParser::parse_headersfunction to parse only the headers of a message. - Removed
RfcHeaderenum, now all headers are represented usingHeaderName. - All address types are now stored in the
HeaderValue::Addressvariant using theAddressenum. - 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
MessageStreamto 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
Vecinstead of aHashMapfor 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.
Messageheaders are now stored as aMessagePartwith index 0.- Improved
MessagePartAPI. - 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_headersandget_headermethods. - Added
get_return_addressmethod 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_namefor 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::parsereturnsOption<Message>to indicate when parsing was successful. - Headers are now stored internally in a
HashMapinstead ofstructfields. - Added support for new RFCs:
- Performance enhacements, now mail-parser is almost as fast as the
unsafe0.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
unsafecode to speed things up.