diff --git a/src/Connection/ImapQueryBuilder.php b/src/Connection/ImapQueryBuilder.php index 0054655..943b279 100644 --- a/src/Connection/ImapQueryBuilder.php +++ b/src/Connection/ImapQueryBuilder.php @@ -232,7 +232,9 @@ public function header(string $header, string $value): static */ public function uid(int|string|array $uid): static { - return $this->where(ImapSearchKey::Uid, implode(',', (array) $uid)); + return $this->where(ImapSearchKey::Uid, new RawQueryValue( + Str::set(array_map('intval', (array) $uid)) + )); } /** diff --git a/tests/Unit/Connection/ImapQueryBuilderTest.php b/tests/Unit/Connection/ImapQueryBuilderTest.php index cd2760e..44a6b83 100644 --- a/tests/Unit/Connection/ImapQueryBuilderTest.php +++ b/tests/Unit/Connection/ImapQueryBuilderTest.php @@ -228,3 +228,19 @@ function (ImapQueryBuilder $q) { expect($builder->toImap())->toBe('FOO "Jou&AOk-"'); }); + +test('compiles UID condition without quotes', function () { + $builder = new ImapQueryBuilder; + + $builder->uid(2); + + expect($builder->toImap())->toBe('UID 2'); +}); + +test('compiles multiple UID values without quotes', function () { + $builder = new ImapQueryBuilder; + + $builder->uid([2, 3, 5]); + + expect($builder->toImap())->toBe('UID 2,3,5'); +});