@@ -6,13 +6,41 @@ Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) princip
6
6
7
7
## [ UNRELEASED]
8
8
### Fixed
9
- - NaN
9
+ - The message uid and message number will only be fetched if accessed and wasn't previously set #326 #285 (thanks @szymekjanaczek )
10
+ - Fix undefined attachment name when headers use "filename* =" format #301 (thanks @JulienChavee )
11
+ - Fixed ` ImapProtocol::logout ` always throws 'not connected' Exception after upgraded to 4.1.2 #351
12
+ - Protocol interface and methods unified
13
+ - Strict attribute and return types introduced where ever possible
14
+ - Parallel messages during idle #338
15
+ - Idle timeout / stale resource stream issue fixed
16
+ - Syntax updated to support php 8 features
17
+ - Get the attachment file extension from the filename if no mimetype detection library is available
18
+ - Prevent the structure parsing from parsing an empty part
10
19
11
20
### Added
12
- - NaN
21
+ - Unit tests added #347 #242 (thanks @sergiy-petrov , @boekkooi-lengoo )
22
+ - ` Client::clone() ` method added to clone a client instance
23
+ - Save an entire message (including its headers) ` Message::save() `
24
+ - Restore a message from a local or remote file ` Message::fromFile() `
25
+ - Protocol resource stream accessor added ` Protocol::getStream() `
26
+ - Protocol resource stream meta data accessor added ` Protocol::meta() `
27
+ - ImapProtocol resource stream reset method added ` ImapProtocol::reset() `
28
+ - Protocol ` Response::class ` introduced to handle and unify all protocol requests
29
+ - Static mask config accessor added ` ClientManager::getMask() ` added
30
+ - An ` Attribute::class ` instance can be treated as array
31
+ - Get the current client account configuration via ` Client::getConfig() `
32
+ - Delete a folder via ` Client::deleteFolder() `
13
33
14
34
### Breaking changes
15
- - NaN
35
+ - PHP ^8.0.2 required
36
+ - ` nesbot/carbon ` version bumped to ^2.62.1
37
+ - ` phpunit/phpunit ` version bumped to ^9.5.10
38
+ - ` Header::get() ` always returns an ` Attribute::class ` instance
39
+ - ` Attribute::class ` accessor methods renamed to shorten their names and improve the readability
40
+ - All protocol methods that used to return ` array|bool ` will now always return a ` Response::class ` instance.
41
+ - ` ResponseException::class ` gets thrown if a response is empty or contains errors
42
+ - Message client is optional and can be null (e.g. if used in combination with ` Message::fromFile() ` )
43
+ - The message text or html body is now "" if its empty and not ` null `
16
44
17
45
18
46
## [ 4.1.2] - 2022-12-14
0 commit comments