diff --git a/src/Symfony/Component/Mime/RawMessage.php b/src/Symfony/Component/Mime/RawMessage.php index 66788d8ad526d..d2a311daebecf 100644 --- a/src/Symfony/Component/Mime/RawMessage.php +++ b/src/Symfony/Component/Mime/RawMessage.php @@ -33,8 +33,11 @@ public function toString(): string if (\is_string($this->message)) { return $this->message; } + if ($this->message instanceof \Traversable) { + $this->message = iterator_to_array($this->message, false); + } - return $this->message = implode('', iterator_to_array($this->message, false)); + return $this->message = implode('', $this->message); } public function toIterable(): iterable diff --git a/src/Symfony/Component/Mime/Tests/RawMessageTest.php b/src/Symfony/Component/Mime/Tests/RawMessageTest.php index 26e7605baba2d..41503451bb1da 100644 --- a/src/Symfony/Component/Mime/Tests/RawMessageTest.php +++ b/src/Symfony/Component/Mime/Tests/RawMessageTest.php @@ -16,16 +16,12 @@ class RawMessageTest extends TestCase { - public function testToString() + /** + * @dataProvider provideMessages + */ + public function testToString($messageParameter) { - $message = new RawMessage('string'); - $this->assertEquals('string', $message->toString()); - $this->assertEquals('string', implode('', iterator_to_array($message->toIterable()))); - // calling methods more than once work - $this->assertEquals('string', $message->toString()); - $this->assertEquals('string', implode('', iterator_to_array($message->toIterable()))); - - $message = new RawMessage(new \ArrayObject(['some', ' ', 'string'])); + $message = new RawMessage($messageParameter); $this->assertEquals('some string', $message->toString()); $this->assertEquals('some string', implode('', iterator_to_array($message->toIterable()))); // calling methods more than once work @@ -33,6 +29,15 @@ public function testToString() $this->assertEquals('some string', implode('', iterator_to_array($message->toIterable()))); } + public function provideMessages(): array + { + return [ + 'string' => ['some string'], + 'traversable' => [new \ArrayObject(['some', ' ', 'string'])], + 'array' => [['some', ' ', 'string']], + ]; + } + public function testSerialization() { $message = new RawMessage('string');