This commit is contained in:
the-djmaze 2023-08-21 09:12:27 +02:00
parent 83456164c7
commit d6eb0d927a
3 changed files with 14 additions and 8 deletions

View file

@ -384,14 +384,17 @@ trait Messages
* @throws \MailSo\Net\Exceptions\* * @throws \MailSo\Net\Exceptions\*
* @throws \MailSo\Imap\Exceptions\* * @throws \MailSo\Imap\Exceptions\*
*/ */
public function MessageSimpleESearch(string $sSearchCriterias = 'ALL', array $aSearchReturn = null, bool $bReturnUid = true, string $sCharset = '', string $sLimit = '') : array public function MessageSimpleESearch(string $sSearchCriterias = 'ALL', array $aSearchReturn = null, bool $bReturnUid = true, string $sLimit = '') : array
{ {
$oESearch = new \MailSo\Imap\Requests\ESEARCH($this); $oESearch = new \MailSo\Imap\Requests\ESEARCH($this);
$oESearch->sCriterias = $sSearchCriterias; $oESearch->sCriterias = $sSearchCriterias;
$oESearch->aReturn = $aSearchReturn; $oESearch->aReturn = $aSearchReturn;
$oESearch->bUid = $bReturnUid; $oESearch->bUid = $bReturnUid;
$oESearch->sLimit = $sLimit; $oESearch->sLimit = $sLimit;
$oESearch->sCharset = $sCharset; // if (!$this->UTF8Mode() && !\mb_check_encoding($sSearchCriterias, 'UTF-8')) {
if (!$this->UTF8Mode() && !\MailSo\Base\Utils::IsAscii($sSearchCriterias)) {
$oESearch->sCharset = 'UTF-8';
}
$oESearch->SendRequest(); $oESearch->SendRequest();
return $this->getSimpleESearchOrESortResult($bReturnUid); return $this->getSimpleESearchOrESortResult($bReturnUid);
} }
@ -420,12 +423,13 @@ trait Messages
* @throws \MailSo\Net\Exceptions\* * @throws \MailSo\Net\Exceptions\*
* @throws \MailSo\Imap\Exceptions\* * @throws \MailSo\Imap\Exceptions\*
*/ */
public function MessageSimpleSearch(string $sSearchCriterias = 'ALL', bool $bReturnUid = true, string $sCharset = '') : array public function MessageSimpleSearch(string $sSearchCriterias = 'ALL', bool $bReturnUid = true) : array
{ {
$aRequest = array(); $aRequest = array();
if (\strlen($sCharset)) { // if (!$this->UTF8Mode() && !\mb_check_encoding($sSearchCriterias, 'UTF-8')) {
if (!$this->UTF8Mode() && !\MailSo\Base\Utils::IsAscii($sSearchCriterias)) {
$aRequest[] = 'CHARSET'; $aRequest[] = 'CHARSET';
$aRequest[] = \strtoupper($sCharset); $aRequest[] = 'UTF-8';
} }
$aRequest[] = !\strlen($sSearchCriterias) || '*' === $sSearchCriterias ? 'ALL' : $sSearchCriterias; $aRequest[] = !\strlen($sSearchCriterias) || '*' === $sSearchCriterias ? 'ALL' : $sSearchCriterias;

View file

@ -49,6 +49,9 @@ class ImapClient extends \MailSo\Net\NetClient
private bool $bIsLoggined = false; private bool $bIsLoggined = false;
/**
* RFC 6855 UTF8 mode
*/
private bool $UTF8 = false; private bool $UTF8 = false;
public function Hash() : string public function Hash() : string
@ -685,5 +688,4 @@ class ImapClient extends \MailSo\Net\NetClient
{ {
return $this->UTF8 ? $sText : \MailSo\Base\Utils::Utf7ModifiedToUtf8($sText); return $this->UTF8 ? $sText : \MailSo\Base\Utils::Utf7ModifiedToUtf8($sText);
} }
} }

View file

@ -607,8 +607,8 @@ class MailClient
$aResultUids = $this->oImapClient->MessageSimpleSort($aSortTypes, $sSearchCriterias, $bReturnUid); $aResultUids = $this->oImapClient->MessageSimpleSort($aSortTypes, $sSearchCriterias, $bReturnUid);
} else { } else {
// $this->oImapClient->hasCapability('ESEARCH') // $this->oImapClient->hasCapability('ESEARCH')
// $aResultUids = $this->oImapClient->MessageSimpleESearch($sSearchCriterias, null, $bReturnUid, \MailSo\Base\Utils::IsAscii($sSearchCriterias) ? '' : 'UTF-8') // $aResultUids = $this->oImapClient->MessageSimpleESearch($sSearchCriterias, null, $bReturnUid)
$aResultUids = $this->oImapClient->MessageSimpleSearch($sSearchCriterias, $bReturnUid, \MailSo\Base\Utils::IsAscii($sSearchCriterias) ? '' : 'UTF-8'); $aResultUids = $this->oImapClient->MessageSimpleSearch($sSearchCriterias, $bReturnUid);
} }
if ($bUseCacheAfterSearch) { if ($bUseCacheAfterSearch) {