singleton('config', function () { return new Repository([ 'services.ses' => [ 'key' => 'foo', 'secret' => 'bar', 'region' => 'us-east-1', ], ]); }); $manager = new MailManager($container); /** @var \Illuminate\Mail\Transport\SesTransport $transport */ $transport = $manager->createTransport(['transport' => 'ses']); $ses = $transport->ses(); $this->assertSame('us-east-1', $ses->getRegion()); } public function testSend() { $message = new Swift_Message('Foo subject', 'Bar body'); $message->setSender('myself@example.com'); $message->setTo('me@example.com'); $message->setBcc('you@example.com'); $client = $this->getMockBuilder(SesClient::class) ->addMethods(['sendRawEmail']) ->disableOriginalConstructor() ->getMock(); $transport = new SesTransport($client); // Generate a messageId for our mock to return to ensure that the post-sent message // has X-Message-ID in its headers $messageId = Str::random(32); $sendRawEmailMock = new SendRawEmailMock($messageId); $client->expects($this->once()) ->method('sendRawEmail') ->with($this->equalTo([ 'Source' => 'myself@example.com', 'RawMessage' => ['Data' => (string) $message], ])) ->willReturn($sendRawEmailMock); $transport->send($message); $this->assertEquals($messageId, $message->getHeaders()->get('X-Message-ID')->getFieldBody()); $this->assertEquals($messageId, $message->getHeaders()->get('X-SES-Message-ID')->getFieldBody()); } public function testSesLocalConfiguration() { $container = new Container; $container->singleton('config', function () { return new Repository([ 'mail' => [ 'mailers' => [ 'ses' => [ 'transport' => 'ses', 'region' => 'eu-west-1', 'options' => [ 'ConfigurationSetName' => 'Laravel', 'Tags' => [ ['Name' => 'Laravel', 'Value' => 'Framework'], ], ], ], ], ], 'services' => [ 'ses' => [ 'region' => 'us-east-1', ], ], ]); }); $container->instance('view', $this->createMock(Factory::class)); $container->bind('events', function () { return null; }); $manager = new MailManager($container); /** @var \Illuminate\Mail\Mailer $mailer */ $mailer = $manager->mailer('ses'); /** @var \Illuminate\Mail\Transport\SesTransport $transport */ $transport = $mailer->getSwiftMailer()->getTransport(); $this->assertSame('eu-west-1', $transport->ses()->getRegion()); $this->assertSame([ 'ConfigurationSetName' => 'Laravel', 'Tags' => [ ['Name' => 'Laravel', 'Value' => 'Framework'], ], ], $transport->getOptions()); } } class SendRawEmailMock { protected $getResponse; public function __construct($responseValue) { $this->getResponse = $responseValue; } public function get($key) { return $this->getResponse; } }