Skip to content

5.0.0

Compare
Choose a tag to compare
@Webklex Webklex released this 18 Jan 18:37
· 153 commits to master since this release

Fixed

  • The message uid and message number will only be fetched if accessed and wasn't previously set #326 #285 (thanks @szymekjanaczek)
  • Fix undefined attachment name when headers use "filename*=" format #301 (thanks @JulienChavee)
  • Fixed ImapProtocol::logout always throws 'not connected' Exception after upgraded to 4.1.2 #351
  • Protocol interface and methods unified
  • Strict attribute and return types introduced where ever possible
  • Parallel messages during idle #338
  • Idle timeout / stale resource stream issue fixed
  • Syntax updated to support php 8 features
  • Get the attachment file extension from the filename if no mimetype detection library is available
  • Prevent the structure parsing from parsing an empty part
  • Convert all header keys to their lower case representation
  • Restructure the decode function #355 (thanks @istid)

Added

  • Unit tests added #347 #242 (thanks @sergiy-petrov, @boekkooi-lengoo)
  • Client::clone() method added to clone a client instance
  • Save an entire message (including its headers) Message::save()
  • Restore a message from a local or remote file Message::fromFile()
  • Protocol resource stream accessor added Protocol::getStream()
  • Protocol resource stream meta data accessor added Protocol::meta()
  • ImapProtocol resource stream reset method added ImapProtocol::reset()
  • Protocol Response::class introduced to handle and unify all protocol requests
  • Static mask config accessor added ClientManager::getMask() added
  • An Attribute::class instance can be treated as array
  • Get the current client account configuration via Client::getConfig()
  • Delete a folder via Client::deleteFolder()

Breaking changes

  • PHP ^8.0.2 required
  • nesbot/carbon version bumped to ^2.62.1
  • phpunit/phpunit version bumped to ^9.5.10
  • Header::get() always returns an Attribute::class instance
  • Attribute::class accessor methods renamed to shorten their names and improve the readability
  • All protocol methods that used to return array|bool will now always return a Response::class instance.
  • ResponseException::class gets thrown if a response is empty or contains errors
  • Message client is optional and can be null (e.g. if used in combination with Message::fromFile())
  • The message text or html body is now "" if its empty and not null