Releases: Enough-Software/enough_mail
Releases · Enough-Software/enough_mail
v1.0.0
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 correspondingMailConnectionLost
andMailConnectionReEstablished
events. - When the
MailClient
reconnects, it will fetch new messages automatically and notify about them usingMailLoadEvent
. - Breaking changes to
v0.3
:MessageBuilder.encoding
is renamed toMessageBuilder.transferEncoding
and theenum
previously calledMessageEncoding
is now calledTransferEncoding
. All optional parameters previously calledencoding
are now also namedtransferEncoding
.MetaDataEntry.entry
has been renamed toMetaDataEntry.name
.ImapClient.setQuota()
andgetQuota()
methods use named parameters.- Due to null safety, a lots of functions that previously (wrongly) accepted
null
parameters do not acceptnull
as input anymore. - Some fields changed to
final
to ensure consistency.
v0.3.1
v0.3.0
- 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 specifyingreturnOptions
on servers with ESORT. ImapClient.searchMessages(...)
now acceptsList<ReturnOption>
parameter for extending the search according to the ESEARCH standard.- Support
PARTIAL
responses according to the CONTEXT IMAP extension. - Use the LIST extensions:
- Sort messages with
- Alexander Sotnikov fixed
POP3
so that you can now use thePopClient
as intended. - SMTP improvements:
- You can now send messages via the SMTP
BDAT
command usingSmtpClient.sendChunkedMessage()
/sendChunkedMessageData()
/sendChunkedMessageText()
. - You don't require a
MimeMessage
to send any more when you send messages either viaSmtpClient.sendMessageData()
orSmtpClient.sendMessageText()
.
- You can now send messages via the SMTP
- 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
totrue
when callingaddPart()
.
- Attachments are now also added when forrwarding a message without quoting in
- 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
andGB-2312
- Improve reconnecting when using the high level API
- Only download the
ENVELOPE
information when a new mail is detected in high level API
- Remove some dependencies and relax constraints on some so that we all get quicker through the
- Breaking changes:
MessageBuilder.replyToMessage
is renamed toMessageBuilder.originalMessage
v0.2.1
- 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 resumingMailClient
when server does not supportIDLE
v0.2.0
- 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(...)
andMailClient.saveDraftMessage(...)
- Searching for messages is now easier than ever with
MailClient.search(MailSearch)
andSearchQueryBuilder
- #109 - Sent messages are now appended automatically when using the high level
MailClient.sentMessage(...)
call unless setting theappendToSent
parameter tofalse
. - Create IMAP search criteria with
SearchQueryBuilder
and conduct common searches withMailClient.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 withMailClient.buildMimeMessageWithRecommendedTextEncoding(MessageBuilder)
. MessageBuilder
now can recommend text encodings withMessageBuilder.setRecommendedTextEncoding(bool supports8Bit)
and sets content types automatically depending on attachments.- Access attachment information easier using the
MessageBuilder.attachments
field and theAttachmentInfo
class. - You can send a
MessageBuilder
instance instead of aMimeMessage
withMailClient.sendMessageBuilder(...)
. - Breaking API changes:
SmtpClient.login()
is deprecated, please use the better namedSmtpClient.authenticate()
instead, e.g.:
await smtpClient.authenticate(userName, password, AuthMechanism.login)
BodyPart.id
is renamed toBodyPart.cid
to make the meaning clearer.
v0.1.0
- 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 aMessageSequence
instead just a list of integers- High level API now supports moving messages with
MailClient.moveMessages(...)
andMailClient.undoMoveMessages()
methods - High level API now supports deleting messages with
MailClient.deleteMessages(...)
andMailClient.undoDeleteMessages()
methods
v0.0.36
- 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 totrue
when fetching messages or message contents
using the high level API, e.g.MailClient.fetchMessageContents(message, markAsSeen: true)
;
v0.0.34
- 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 inmaxSize
. - Improve documentation, also thanks to TheOneWithTheBraid.
v0.0.33
- 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 fetchENVELOPE
s 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 theauthMechanism
parameter inSmtpClient.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
- 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()
orMimeMessage.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