From afbefe131b45001b4706c5205e52d6062ad79d09 Mon Sep 17 00:00:00 2001 From: Hippolyte Alain Date: Fri, 21 Jun 2019 13:43:07 +0200 Subject: [PATCH] [Mailgun Mailer] fixed issue when using html body --- .../Bridge/Mailgun/Http/Api/MailgunTransport.php | 2 +- .../Component/Mailer/Tests/TransportTest.php | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/Api/MailgunTransport.php b/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/Api/MailgunTransport.php index 9e61ee4dcd..f546537831 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/Api/MailgunTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/Http/Api/MailgunTransport.php @@ -68,7 +68,7 @@ class MailgunTransport extends AbstractApiTransport { $headers = $email->getHeaders(); $html = $email->getHtmlBody(); - if (null !== $html) { + if (null !== $html && \is_resource($html)) { if (stream_get_meta_data($html)['seekable'] ?? false) { rewind($html); } diff --git a/src/Symfony/Component/Mailer/Tests/TransportTest.php b/src/Symfony/Component/Mailer/Tests/TransportTest.php index a12aae4830..01f25a6aac 100644 --- a/src/Symfony/Component/Mailer/Tests/TransportTest.php +++ b/src/Symfony/Component/Mailer/Tests/TransportTest.php @@ -168,6 +168,19 @@ class TransportTest extends TestCase $transport = Transport::fromDsn('api://'.urlencode('u$er').':'.urlencode('pa$s').'@mailgun?region=us', $dispatcher, $client, $logger); $transport->send($message); + $message = (new Email())->from('me@me.com')->to('you@you.com')->subject('hello')->html('test'); + $client = $this->createMock(HttpClientInterface::class); + $client->expects($this->once())->method('request')->with('POST', 'https://api.mailgun.net/v3/pa%24s/messages')->willReturn($response); + $transport = Transport::fromDsn('api://'.urlencode('u$er').':'.urlencode('pa$s').'@mailgun?region=us', $dispatcher, $client, $logger); + $transport->send($message); + + $stream = fopen('data://text/plain,'.$message->getTextBody(), 'r'); + $message = (new Email())->from('me@me.com')->to('you@you.com')->subject('hello')->html($stream); + $client = $this->createMock(HttpClientInterface::class); + $client->expects($this->once())->method('request')->with('POST', 'https://api.mailgun.net/v3/pa%24s/messages')->willReturn($response); + $transport = Transport::fromDsn('api://'.urlencode('u$er').':'.urlencode('pa$s').'@mailgun?region=us', $dispatcher, $client, $logger); + $transport->send($message); + $this->expectException(LogicException::class); Transport::fromDsn('foo://mailgun'); }