All notable changes to webklex/php-imap
will be documented in this file.
Updates should follow the Keep a CHANGELOG principles.
- Fix attribute serialization #179 (thanks @netpok)
- Use real tls instead of starttls #180 (thanks @netpok)
- NaN
- NaN
- NaN
- Extend date parsing error message #173
- Fixed 'Where' method replaces the content with uppercase #148
- Don't surround numeric search values with quotes
- Context added to
InvalidWhereQueryCriteriaException
- Redundant
stream_set_timeout()
removed
- Make boundary regex configurable #169 #150 #126 #121 #111 #152 #108 (thanks @EthraZa)
- IMAP ID support added #174
- Enable debug mode via config
- Custom UID alternative support added
- Fetch additional extensions using
Folder::query(["FEATURE_NAME"])
- Optionally move a message during "deletion" instead of just "flagging" it #106 (thanks @EthraZa)
WhereQuery::where()
accepts now a wide range of criteria / values. #104
- All protocol methods which had a
boolean
$uid
option no longer support a boolean. UseIMAP::ST_UID
orIMAP::NIL
instead. If you want to use an alternative toUID
just use the string instead. - Default config option
options.sequence
changed fromIMAP::ST_MSGN
toIMAP::ST_UID
. Folder::query()
no longer accepts a charset string. It has been replaced by an extension array, which provides the ability to automatically fetch additional features.
- Fixed problem with skipping last line of the response. #166 (thanks @szymekjanaczek)
- Added
UID
as available search criteria #161 (thanks @szymekjanaczek)
- Fixes handling of long header lines which are seperated by
\r\n\t
(thanks @Oliver-Holz) - Fixes to line parsing with multiple addresses (thanks @Oliver-Holz)
- Expose message folder path #154 (thanks @Magiczne)
- Adds mailparse_rfc822_parse_addresses integration (thanks @Oliver-Holz)
- Added moveManyMessages method (thanks @Magiczne)
- Added copyManyMessages method (thanks @Magiczne)
- POP3 fixes #151 (thanks @Korko)
- Added imap 4 handling. #146 (thanks @szymekjanaczek)
- Added laravel's conditionable methods. #147 (thanks @szymekjanaczek)
- Fix setting default mask from config #133 (thanks @shacky)
- Chunked fetch fails in case of less available mails than page size #114
- Protocol::createStream() exception information fixed #137
- Legacy methods (headers, content, flags) fixed #125
- Legacy connection cycle fixed #124 (thanks @zssarkany)
- Disable rfc822 header parsing via config option #115
- Attachment saving filename fixed
- Unnecessary parameter removed from
Client::getTimeout()
- Missing encryption variable added - could have caused problems with unencrypted communications
- Prefer attachment filename attribute over name attribute #82
- Missing connection settings added to
Folder:idle()
auto mode #89 - Message move / copy expect a folder path #79
Client::getFolder()
updated to circumvent special edge cases #79- Missing connection status checks added to various methods
- Unused default attribute
message_no
removed fromMessage::class
- Dynamic Attribute access support added (e.g
$message->from[0]
) - Message not found exception added #93
- Chunked fetching support added
Query::chunked()
. Just in case you can't fetch all messages at once - "Soft fail" support added
- Count method added to
Attribute:class
- Convert an Attribute instance into a Carbon date object #95
- A new exception can occur if a message can't be fetched (
\Webklex\PHPIMAP\Exceptions\MessageNotFoundException::class
) Message::move()
andMessage::copy()
no longer accept folder names as folder path- A
Message::class
instance might no longer have amessage_no
attribute
- Boundary detection simplified #90
- Prevent potential body overwriting #90
- CSV files are no longer regarded as plain body
- Boundary detection overhauled to support "related" and "alternative" multipart messages #90 #91
- Attachment detection updated #82 #90
- Timeout handling improved
- Additional utf-8 checks added to prevent decoding of unencoded values #76
- Auto reconnect option added to
Folder::idle()
#89
- Attachment::save() return error 'A facade root has not been set' #87
- Unused dependencies removed
- Fix PHP 8 error that changes null back in to an empty string. #88 (thanks @mennovanhout)
- Fix regex to be case insensitive #88 (thanks @mennovanhout)
- Debug line position fixed
- Handle incomplete address to string conversion #83
- Configured message key gets overwritten by the first fetched message #84
- Get partial overview when
IMAP::ST_UID
is set #74 - Unnecessary "'" removed from address names
- Folder referral typo fixed
- Legacy protocol fixed
- Treat message collection keys always as strings
- Configurable supported default flags added
- Message attribute class added to unify value handling
- Address class added and integrated
- Alias
Message::attachments()
forMessage::getAttachments()
added - Alias
Message::addFlag()
forMessage::setFlag()
added - Alias
Message::removeFlag()
forMessage::unsetFlag()
added - Alias
Message::flags()
forMessage::getFlags()
added - New Exception
MessageFlagException::class
added - New method
Message::setSequenceId($id)
added - Optional Header attributizion option added
- Stringified message headers are now separated by ", " instead of " ".
- All message header values such as subject, message_id, from, to, etc now consists of an
Àttribute::class
instance (should behave the same way as before, but might cause some problem in certain edge cases) - The formal address object "from", "to", etc now consists of an
Address::class
instance (should behave the same way as before, but might cause some problem in certain edge cases) - When fetching or manipulating message flags a
MessageFlagException::class
exception can be thrown if a runtime error occurs - Learn more about the new
Attribute
class here: www.php-imap.com/api/attribute - Learn more about the new
Address
class here: www.php-imap.com/api/address - Folder attribute "referal" is now called "referral"
- Missing RFC attributes added
- Set the message sequence when idling
- Missing UID commands added #64
- Get a message by its message number
- Get a message by its uid #72 #66 #63
- Cert validation issue fixed
- Allow boundaries ending with a space or semicolon (thanks @smartilabs)
- Ignore IMAP DONE command response #57
- Default
options.fetch
set toIMAP::FT_PEEK
- Address parsing fixed #60
- Alternative rfc822 header parsing fixed #60
- Parse more than one Received: header #61
- Fetch folder overview fixed
Message::getTextBody()
fallback value fixed
- Proxy support added
- Flexible disposition support added #58
- New
options.message_key
optionuid
added - Protocol UID support added
- Flexible sequence type support added
- Depending on your configuration, your certificates actually get checked. Which can cause an aborted connection if the certificate can not be validated.
- Messages don't get flagged as read unless you are using your own custom config.
- All
Header::class
attribute keys are now in a snake_format and no longer minus-separated. Message::getTextBody()
no longer returns false if no text body is present.null
is returned instead.
- Missing array decoder method added #51 (thanks @lutchin)
- Additional checks added to prevent message from getting marked as seen #33
- Boundary parsing improved #39 #36 (thanks @AntonioDiPassio-AppSys)
- Idle operation updated #44
- Force a folder to be opened
- Search performance increased by fetching all headers, bodies and flags at once #42
- Legacy protocol support updated
- Fix Query pagination. (#52 @mikemiller891)
- Missing message setter methods added
Folder::overview()
method added to fetch all headers of all messages in the current folder
- Text/Html body fetched as attachment if subtype is null #34
- Potential header overwriting through header extensions #35
- Prevent empty attachments #37
- Set fetch order during query #41 @Max13
- IMAP::FT_PEEK removing "Seen" flag issue fixed #33
- Header decoding problem fixed #31
- Search for messages by message-Id
- Search for messages by In-Reply-To
- Message threading added
Message::thread()
- Default folder locations added
- Prevent text bodies from being fetched as attachment #27
- Missing variable check added to prevent exception while parsing an address webklex/laravel-imap #356
- Missing variable check added to prevent exception while parsing a part subtype #27
- Missing variable check added to prevent exception while parsing a part content-type webklex/laravel-imap #356
- Mixed message header attribute
in_reply_to
"unified" to be always an array #26 - Potential message moving / copying problem fixed #29
- Move messages by using
Protocol::moveMessage()
instead ofProtocol::copyMessage()
andMessage::delete()
#29
Protocol::moveMessage()
method added #29
- Text bodies might no longer get fetched as attachment
Message::$in_reply_to
type changed from mixed to array
- Boundary detection problem fixed (#28 @DasTobbel)
- Content-Type detection problem fixed (#28 @DasTobbel)
- If content disposition is multiline, implode the array to a simple string (#25 @DasTobbel)
- Potential problematic prefixed white-spaces removed from header attributes
- Expended
Client::getFolder($name, $deleimiter = null)
to accept either a folder name or path (@DasTobbel) - Special MS-Exchange header decoding support added
ClientManager::make()
method added to support undefined accounts
- Fix inline attachments and embedded images (#22 @dwalczyk)
- Alternative attachment names support added (#20 @oneFoldSoftware)
- Fetch message content without leaving a "Seen" flag behind
- Possible error during address decoding fixed (#16 @Slauta)
- Flag event dispatching fixed #15
- Support multiple boundaries (#17, #19 @dwalczyk)
- Fixed
Query::paginate()
(#13 #14 by @Max13)
Message::getAttributes()
hasn't returned all parameters
- Part number added to attachment
Client::getFolderByPath()
added (#12 by @Max13)Client::getFolderByName()
added (#12 by @Max13)- Throws exceptions if the authentication fails (#11 by @Max13)
- Wrong message content property reference fixed (#10)
- Fix header extension values
- Part header detection method changed (#10)
- Possible decoding problem fixed
Str::class
dependency removed fromHeader::class
- Dependency problem in
Attachement::getExtension()
fixed (#9)
- Missing default config parameter added
- Default account config fallback added
- Quota handling fixed
- Event system and callbacks added
- Carbon dependency fixed
- Missing pagination item records fixed
- php-imap module replaced by direct socket communication
- Legacy support added
- IDLE support added
- oAuth support added
- Charset detection method updated
- Decoding fallback charsets added
- All
- .csv attachement is not processed
- mail part structure property comparison changed to lowercase
- Replace helper functions for Laravel 6.0 #4 (@koenhoeijmakers)
- Date handling in Folder::appendMessage() fixed
- Carbon Exception Parse Data
- Convert sender name from non-utf8 to uf8 (@hwilok)
- Convert encoding of personal data struct
- Path prefix option added to Client::getFolder() method
- Attachment size handling added
- Find messages by custom search criteria
- Error in Attachment::__construct #3
- Examples added
- Pagination count total bug #213
- Changed internal message move and copy methods #210
- Query::since() query returning empty response #215
- Carbon Exception Parse Data #45
- Reading a blank body (text / html) but only from this sender #203
- Problem with Message::moveToFolder() and multiple moves #31
- Problem with encoding conversion #203
- Message null value attribute problem fixed
- Client connection path handling changed to be handled inside the calling method #31
- iconv(): error suppressor for //IGNORE added #184
- Typo Folder attribute fullName changed to full_name
- Query scope error fixed #153
- Replace embedded image with URL #151
- Fix sender name in non-latin emails sent from Gmail (#155)
- Fix broken non-latin characters in body in ASCII (us-ascii) charset #156
- Message::getMessageId() returns wrong value #197
- Message date validation extended #45 #192
- Removed "-i" from "iso-8859-8-i" in Message::parseBody #146
- Message::getFolder() method
- Create a fast count method for queries #216
- STARTTLS encryption alias added
- Mailbox fetching exception added #201
- Message::moveToFolder() fetches new Message::class afterwards #31
- Message structure accessor added #182
- Shadow Imap const class added #188
- Connectable "NOT" queries added
- Additional where methods added
- Message attribute handling changed
- Attachment attribute handling changed
- Message flag handling updated
- Message::getHTMLBody($callback) extended
- Masks added (take look at the examples for more information on masks)
- More examples added
- Query::paginate() method added
- Imap client timeout can be modified and read #186
- Decoder config options added #175
- Message search criteria "NOT" added #181
- Invalid message date exception added
- Blade examples
- Message::moveToFolder() returns either a Message::class instance or null and not a boolean
- Folder::fullName is now Folder::full_name
- Attachment::image_src might no longer work as expected - use Attachment::getImageSrc() instead
- Folder delimiter check added #137
- Config setting not getting loaded
- Date parsing updated
- new php-imap package (fork from webklex/laravel-imap)