Skip to content

Releases: Enough-Software/enough_mail

v1.0.0

21 Mar 10:09
Compare
Choose a tag to compare
  • enough_mail is now null safe #127
  • Support zulu timezone in date decoding #132
  • When the MailClient loses a connection or reconnects, it will now fire corresponding MailConnectionLost and MailConnectionReEstablished events.
  • When the MailClient reconnects, it will fetch new messages automatically and notify about them using MailLoadEvent.
  • Breaking changes to v0.3:
    • MessageBuilder.encoding is renamed to MessageBuilder.transferEncoding and the enum previously called MessageEncoding is now called TransferEncoding. All optional parameters previously called encoding are now also named transferEncoding.
    • MetaDataEntry.entry has been renamed to MetaDataEntry.name.
    • ImapClient.setQuota() and getQuota() methods use named parameters.
    • Due to null safety, a lots of functions that previously (wrongly) accepted null parameters do not accept null as input anymore.
    • Some fields changed to final to ensure consistency.

v0.3.1

10 Mar 11:14
Compare
Choose a tag to compare
  • Fix for handling PARTIAL IMAP responses - thanks to A.Zulli
  • Fix for handling FETCH IMAP responses that are spread across several response lines for a single message - #131

v0.3.0

07 Mar 20:36
Compare
Choose a tag to compare
  • KevinBLT contributed the following improvements and features:
    • Check out the experimental DKIM signing of messages.
    • Enjoy the improved the performance of QuotedPrintable encoding.
    • BCC header is now stripped from messages before sending them via SMTP
  • A.Zulli contributed major IMAP features in this release:
    • Sort messages with ImapClient.sortMessages(...) SORT - and also use the extended sort mechanism with specifying returnOptions on servers with ESORT.
    • ImapClient.searchMessages(...) now accepts List<ReturnOption> parameter for extending the search according to the ESEARCH standard.
    • Support PARTIAL responses according to the CONTEXT IMAP extension.
    • Use the LIST extensions:
      • rfc5258: LIST command extensions
      • rfc5819: return STATUS in extended lists
      • rfc6154: SPECIAL-USE mailboxes
  • Alexander Sotnikov fixed POP3 so that you can now use the PopClient as intended.
  • SMTP improvements:
    • You can now send messages via the SMTP BDAT command using SmtpClient.sendChunkedMessage() / sendChunkedMessageData() / sendChunkedMessageText().
    • You don't require a MimeMessage to send any more when you send messages either via SmtpClient.sendMessageData() or SmtpClient.sendMessageText().
  • MessageBuilder / MIME generation improvements:
    • Attachments are now also added when forrwarding a message without quoting in MessageBuilder.prepareForwardMessage().
    • You can now also prepend parts by setting insert to true when calling addPart().
  • Other improvements and bugfixes:
    • Remove some dependencies and relax constraints on some so that we all get quicker through the null-safety challenge.
    • Fixed decoding of 8bit messages that use a different charset than UTF8
    • Fixed header decoding in some edge cases
    • Some fixes in parsing personal names in email addresses
    • Support Chinese encodings GBK and GB-2312
    • Improve reconnecting when using the high level API
    • Only download the ENVELOPE information when a new mail is detected in high level API
  • Breaking changes:
    • MessageBuilder.replyToMessage is renamed to MessageBuilder.originalMessage

v0.2.1

04 Feb 13:21
Compare
Choose a tag to compare
  • Allow to specify connectionTimeout for all low level clients
  • Support non-ASCII IMAP searches when supported by server
  • Fix reconnection issue for ImapClient
  • Fix decoding of sequentiell encoded words in edge cases
  • Do a noop when resuming MailClient when server does not support IDLE

v0.2.0

02 Feb 12:15
Compare
Choose a tag to compare
  • ImapClient now processes tasks sequentially, removing the dreaded StreamSink is bound to a stream exception when accessing ImapClient from several threads.
  • Highlevel API for adding mail messages with MailClient.appendMessage(...) / .appendMessageToFlag(...) and MailClient.saveDraftMessage(...)
  • Searching for messages is now easier than ever with MailClient.search(MailSearch) and SearchQueryBuilder- #109
  • Sent messages are now appended automatically when using the high level MailClient.sentMessage(...) call unless setting the appendToSent parameter to false.
  • Create IMAP search criteria with SearchQueryBuilder and conduct common searches with MailClient.search(MailSearch)
  • Fixed detection of audio media types
  • Added CRAM-MD5 authentication support for SMTP - #108
  • Added XOAUTH2 authentication support for SMTP - #107
  • Create MessageSequence from list of mime messages with MessageSequence.fromMessages(List<MimeMessage>)
  • You can now check with the highlevel API if you can send 8bit messages with MailClient.supports8BitEncoding() and set the preferred encoding with MailClient.buildMimeMessageWithRecommendedTextEncoding(MessageBuilder).
  • MessageBuilder now can recommend text encodings with MessageBuilder.setRecommendedTextEncoding(bool supports8Bit) and sets content types automatically depending on attachments.
  • Access attachment information easier using the MessageBuilder.attachments field and the AttachmentInfo class.
  • You can send a MessageBuilder instance instead of a MimeMessage with MailClient.sendMessageBuilder(...).
  • Breaking API changes:
    • SmtpClient.login() is deprecated, please use the better named SmtpClient.authenticate() instead, e.g.:
      await smtpClient.authenticate(userName, password, AuthMechanism.login)
    • BodyPart.id is renamed to BodyPart.cid to make the meaning clearer.

v0.1.0

11 Jan 11:47
Compare
Choose a tag to compare
  • Moving from response based to exceptions, compare the migration guide for details compare the migration guide in Readme.md and #101 for details - specicial thanks to Tienisto
  • Improved performance when downloading large data significantly
  • High Level API now checks for SMTP START TLS support before switching to a secure connection when connected via plan sockets
  • Low level SMTP API now exposes all found server capabilities
  • Fix decoding bug for UTF8 8 bit encoded text
  • ImapClient.search(...) now returns a MessageSequence instead just a list of integers
  • High level API now supports moving messages with MailClient.moveMessages(...) and MailClient.undoMoveMessages() methods
  • High level API now supports deleting messages with MailClient.deleteMessages(...) and MailClient.undoDeleteMessages() methods

v0.0.36

20 Dec 10:53
Compare
Choose a tag to compare
v0.0.36 Pre-release
Pre-release
  • Remove spaces between two encoded words in headers
  • High level API support for deleting messages and undoing it:
    • Future<MailResponse<DeleteResult>> deleteMessages(
      MessageSequence sequence, Mailbox trashMailbox)
    • Future<MailResponse<DeleteResult>> deleteAllMessages(Mailbox mailbox,
      {bool expunge})
  • Deleted messages are now preferably moved to \Trash folder, when possible.
  • Optionally mark a message as seen by setting markAsSeen parameter to true when fetching messages or message contents
    using the high level API, e.g. MailClient.fetchMessageContents(message, markAsSeen: true);

v0.0.34

03 Dec 22:43
Compare
Choose a tag to compare
v0.0.34 Pre-release
Pre-release
  • Fix handling of VANISHED (EARLIER) responses in edge cases thanks to Andrea.
  • Find a mime message part by its content-ID with the MimeMessage.getPartWithContentId(String cid) helper method.
  • List all parts of a mime message sequentially using the MimeMessage.allPartsFlat getter.
  • Fix problems with UTF8 8-bit decoded answers.
  • Use the enough_serialization for JSON (de)serialization support.
  • Improve discovery of mail settings.
  • Allow to limit the download size of messages: MailClient.fetchMessageContents(MimeMessage message, {int maxSize}) fetches all parts apart from attachments when the message size is bigger than the one specified in bytes in maxSize.
  • Improve documentation, also thanks to TheOneWithTheBraid.

v0.0.33

20 Sep 18:29
Compare
Choose a tag to compare
v0.0.33 Pre-release
Pre-release
  • Support IMAP QUOTA Extension thanks to azulli.
  • Throw exceptions that might occur while sending a message thanks to hpoul.
  • Retrieve currently selected mailbox in highlevel API with MailClient.selectedMailbox.
  • Specify fetchPreference in highlevel API when fetching messages, for example to only fetch ENVELOPEs first.
  • Create a message builder based on a mailto link with MessageBuilder.prepareMailtoBasedMessage().
  • Mail events now contain the originating ImapClient, SmtpClient or MailClient instance to match the event when having several active accounts at the same time.
  • Support the SMTP AUTH LOGIN authentication by specying the authMechanism parameter in SmtpClient.login().
  • Ease flagging of messages with MailClient.flagMessage().
  • Highlevel API now udates flags of a message correctly when they have changed remotely.

v0.0.32

11 Aug 19:44
Compare
Choose a tag to compare
v0.0.32 Pre-release
Pre-release
  • easier to retrieve and set common message flags such as \Seen, \Answered and $Forwarded
  • use MimeMessage.isSeen, .isAnswered, .isForwarded to query the corresponding flags
  • use MimeMessage.hasAttachments() or MimeMessage.hasAttachmentsOrInlineNonTextualParts() to determine if the message contains attachment parts.
  • Q-Encoding is used for encoding/decoding corresponding MIME message headers now, compare #77 for details