diff --git a/src/Illuminate/Mail/Transport/SesTransport.php b/src/Illuminate/Mail/Transport/SesTransport.php index 3938d510834b..75669e2fc071 100644 --- a/src/Illuminate/Mail/Transport/SesTransport.php +++ b/src/Illuminate/Mail/Transport/SesTransport.php @@ -45,7 +45,7 @@ public function __construct(SesClient $ses, $options = []) protected function doSend(SentMessage $message): void { try { - $this->ses->sendRawEmail( + $result = $this->ses->sendRawEmail( array_merge( $this->options, [ 'Source' => $message->getEnvelope()->getSender()->toString(), @@ -58,6 +58,8 @@ protected function doSend(SentMessage $message): void } catch (AwsException $e) { throw new Exception('Request to AWS SES API failed.', $e->getCode(), $e); } + + $message->setMessageId($result->get('MessageId')); } /** diff --git a/tests/Mail/MailSesTransportTest.php b/tests/Mail/MailSesTransportTest.php index 9e5fe65d7597..e469ac5081d7 100755 --- a/tests/Mail/MailSesTransportTest.php +++ b/tests/Mail/MailSesTransportTest.php @@ -2,6 +2,7 @@ namespace Illuminate\Tests\Mail; +use Aws\Result; use Aws\Ses\SesClient; use Illuminate\Config\Repository; use Illuminate\Container\Container; @@ -56,10 +57,15 @@ public function testSend() $message->to('me@example.com'); $message->bcc('you@example.com'); + $result = m::mock(Result::class); + $result->shouldReceive('get')->once()->with('MessageId')->andReturn('123'); + $client = m::mock(SesClient::class); - $client->shouldReceive('sendRawEmail')->once(); + $client->shouldReceive('sendRawEmail')->once()->andReturn($result); + + $sentMessage = (new SesTransport($client))->send($message); - (new SesTransport($client))->send($message); + $this->assertEquals('123', $sentMessage->getMessageId()); } public function testSesLocalConfiguration()