[Mailer] AWS SES transport Source ARN header support
This commit is contained in:
parent
c757845643
commit
d7225db7d5
@ -70,6 +70,7 @@ class SesApiAsyncAwsTransportTest extends TestCase
|
|||||||
$this->assertSame('<b>Hello There!</b>', $content['Content']['Simple']['Body']['Html']['Data']);
|
$this->assertSame('<b>Hello There!</b>', $content['Content']['Simple']['Body']['Html']['Data']);
|
||||||
$this->assertSame(['replyto-1@example.com', 'replyto-2@example.com'], $content['ReplyToAddresses']);
|
$this->assertSame(['replyto-1@example.com', 'replyto-2@example.com'], $content['ReplyToAddresses']);
|
||||||
$this->assertSame('aws-configuration-set-name', $content['ConfigurationSetName']);
|
$this->assertSame('aws-configuration-set-name', $content['ConfigurationSetName']);
|
||||||
|
$this->assertSame('aws-source-arn', $content['FromEmailAddressIdentityArn']);
|
||||||
$this->assertSame('bounces@example.com', $content['FeedbackForwardingEmailAddress']);
|
$this->assertSame('bounces@example.com', $content['FeedbackForwardingEmailAddress']);
|
||||||
|
|
||||||
$json = '{"MessageId": "foobar"}';
|
$json = '{"MessageId": "foobar"}';
|
||||||
@ -91,6 +92,7 @@ class SesApiAsyncAwsTransportTest extends TestCase
|
|||||||
->returnPath(new Address('bounces@example.com'));
|
->returnPath(new Address('bounces@example.com'));
|
||||||
|
|
||||||
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
||||||
|
$mail->getHeaders()->addTextHeader('X-SES-SOURCE-ARN', 'aws-source-arn');
|
||||||
|
|
||||||
$message = $transport->send($mail);
|
$message = $transport->send($mail);
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ class SesApiTransportTest extends TestCase
|
|||||||
$this->assertSame('Fabien <fabpot@symfony.com>', $content['Source']);
|
$this->assertSame('Fabien <fabpot@symfony.com>', $content['Source']);
|
||||||
$this->assertSame('Hello There!', $content['Message_Body_Text_Data']);
|
$this->assertSame('Hello There!', $content['Message_Body_Text_Data']);
|
||||||
$this->assertSame('aws-configuration-set-name', $content['ConfigurationSetName']);
|
$this->assertSame('aws-configuration-set-name', $content['ConfigurationSetName']);
|
||||||
|
$this->assertSame('aws-source-arn', $content['FromEmailAddressIdentityArn']);
|
||||||
|
|
||||||
$xml = '<SendEmailResponse xmlns="https://email.amazonaws.com/doc/2010-03-31/">
|
$xml = '<SendEmailResponse xmlns="https://email.amazonaws.com/doc/2010-03-31/">
|
||||||
<SendEmailResult>
|
<SendEmailResult>
|
||||||
@ -90,6 +91,7 @@ class SesApiTransportTest extends TestCase
|
|||||||
->text('Hello There!');
|
->text('Hello There!');
|
||||||
|
|
||||||
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
||||||
|
$mail->getHeaders()->addTextHeader('X-SES-SOURCE-ARN', 'aws-source-arn');
|
||||||
|
|
||||||
$message = $transport->send($mail);
|
$message = $transport->send($mail);
|
||||||
|
|
||||||
@ -135,6 +137,7 @@ class SesApiTransportTest extends TestCase
|
|||||||
->attach('attached data');
|
->attach('attached data');
|
||||||
|
|
||||||
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
||||||
|
$mail->getHeaders()->addTextHeader('X-SES-SOURCE-ARN', 'aws-source-arn');
|
||||||
|
|
||||||
$message = $transport->send($mail);
|
$message = $transport->send($mail);
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ class SesHttpAsyncAwsTransportTest extends TestCase
|
|||||||
$this->assertStringContainsString('Fabien <fabpot@symfony.com>', $content);
|
$this->assertStringContainsString('Fabien <fabpot@symfony.com>', $content);
|
||||||
$this->assertStringContainsString('Hello There!', $content);
|
$this->assertStringContainsString('Hello There!', $content);
|
||||||
$this->assertSame('aws-configuration-set-name', $body['ConfigurationSetName']);
|
$this->assertSame('aws-configuration-set-name', $body['ConfigurationSetName']);
|
||||||
|
$this->assertSame('aws-source-arn', $body['FromEmailAddressIdentityArn']);
|
||||||
|
|
||||||
$json = '{"MessageId": "foobar"}';
|
$json = '{"MessageId": "foobar"}';
|
||||||
|
|
||||||
@ -86,6 +87,7 @@ class SesHttpAsyncAwsTransportTest extends TestCase
|
|||||||
->text('Hello There!');
|
->text('Hello There!');
|
||||||
|
|
||||||
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
||||||
|
$mail->getHeaders()->addTextHeader('X-SES-SOURCE-ARN', 'aws-source-arn');
|
||||||
|
|
||||||
$message = $transport->send($mail);
|
$message = $transport->send($mail);
|
||||||
|
|
||||||
|
@ -77,6 +77,7 @@ class SesHttpTransportTest extends TestCase
|
|||||||
$this->assertStringContainsString('Hello There!', $content);
|
$this->assertStringContainsString('Hello There!', $content);
|
||||||
|
|
||||||
$this->assertSame('aws-configuration-set-name', $body['ConfigurationSetName']);
|
$this->assertSame('aws-configuration-set-name', $body['ConfigurationSetName']);
|
||||||
|
$this->assertSame('aws-source-arn', $body['FromEmailAddressIdentityArn']);
|
||||||
|
|
||||||
$xml = '<SendEmailResponse xmlns="https://email.amazonaws.com/doc/2010-03-31/">
|
$xml = '<SendEmailResponse xmlns="https://email.amazonaws.com/doc/2010-03-31/">
|
||||||
<SendRawEmailResult>
|
<SendRawEmailResult>
|
||||||
@ -99,6 +100,7 @@ class SesHttpTransportTest extends TestCase
|
|||||||
->text('Hello There!');
|
->text('Hello There!');
|
||||||
|
|
||||||
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
$mail->getHeaders()->addTextHeader('X-SES-CONFIGURATION-SET', 'aws-configuration-set-name');
|
||||||
|
$mail->getHeaders()->addTextHeader('X-SES-SOURCE-ARN', 'aws-source-arn');
|
||||||
|
|
||||||
$message = $transport->send($mail);
|
$message = $transport->send($mail);
|
||||||
|
|
||||||
|
@ -92,6 +92,9 @@ class SesApiAsyncAwsTransport extends SesHttpAsyncAwsTransport
|
|||||||
if ($header = $email->getHeaders()->get('X-SES-CONFIGURATION-SET')) {
|
if ($header = $email->getHeaders()->get('X-SES-CONFIGURATION-SET')) {
|
||||||
$request['ConfigurationSetName'] = $header->getBodyAsString();
|
$request['ConfigurationSetName'] = $header->getBodyAsString();
|
||||||
}
|
}
|
||||||
|
if ($header = $email->getHeaders()->get('X-SES-SOURCE-ARN')) {
|
||||||
|
$request['FromEmailAddressIdentityArn'] = $header->getBodyAsString();
|
||||||
|
}
|
||||||
if ($email->getReturnPath()) {
|
if ($email->getReturnPath()) {
|
||||||
$request['FeedbackForwardingEmailAddress'] = $email->getReturnPath()->toString();
|
$request['FeedbackForwardingEmailAddress'] = $email->getReturnPath()->toString();
|
||||||
}
|
}
|
||||||
|
@ -99,6 +99,10 @@ class SesApiTransport extends AbstractApiTransport
|
|||||||
$payload['ConfigurationSetName'] = $header->getBodyAsString();
|
$payload['ConfigurationSetName'] = $header->getBodyAsString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($header = $email->getHeaders()->get('X-SES-SOURCE-ARN')) {
|
||||||
|
$payload['FromEmailAddressIdentityArn'] = $header->getBodyAsString();
|
||||||
|
}
|
||||||
|
|
||||||
return $payload;
|
return $payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +131,9 @@ class SesApiTransport extends AbstractApiTransport
|
|||||||
if ($header = $email->getHeaders()->get('X-SES-CONFIGURATION-SET')) {
|
if ($header = $email->getHeaders()->get('X-SES-CONFIGURATION-SET')) {
|
||||||
$payload['ConfigurationSetName'] = $header->getBodyAsString();
|
$payload['ConfigurationSetName'] = $header->getBodyAsString();
|
||||||
}
|
}
|
||||||
|
if ($header = $email->getHeaders()->get('X-SES-SOURCE-ARN')) {
|
||||||
|
$payload['FromEmailAddressIdentityArn'] = $header->getBodyAsString();
|
||||||
|
}
|
||||||
|
|
||||||
return $payload;
|
return $payload;
|
||||||
}
|
}
|
||||||
|
@ -83,6 +83,10 @@ class SesHttpAsyncAwsTransport extends AbstractTransport
|
|||||||
&& $configurationSetHeader = $message->getOriginalMessage()->getHeaders()->get('X-SES-CONFIGURATION-SET')) {
|
&& $configurationSetHeader = $message->getOriginalMessage()->getHeaders()->get('X-SES-CONFIGURATION-SET')) {
|
||||||
$request['ConfigurationSetName'] = $configurationSetHeader->getBodyAsString();
|
$request['ConfigurationSetName'] = $configurationSetHeader->getBodyAsString();
|
||||||
}
|
}
|
||||||
|
if (($message->getOriginalMessage() instanceof Message)
|
||||||
|
&& $sourceArnHeader = $message->getOriginalMessage()->getHeaders()->get('X-SES-SOURCE-ARN')) {
|
||||||
|
$request['FromEmailAddressIdentityArn'] = $sourceArnHeader->getBodyAsString();
|
||||||
|
}
|
||||||
|
|
||||||
return new SendEmailRequest($request);
|
return new SendEmailRequest($request);
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,11 @@ class SesHttpTransport extends AbstractHttpTransport
|
|||||||
$request['body']['ConfigurationSetName'] = $configurationSetHeader->getBodyAsString();
|
$request['body']['ConfigurationSetName'] = $configurationSetHeader->getBodyAsString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($message->getOriginalMessage() instanceof Message
|
||||||
|
&& $sourceArnHeader = $message->getOriginalMessage()->getHeaders()->get('X-SES-SOURCE-ARN')) {
|
||||||
|
$request['body']['FromEmailAddressIdentityArn'] = $sourceArnHeader->getBodyAsString();
|
||||||
|
}
|
||||||
|
|
||||||
$response = $this->client->request('POST', 'https://'.$this->getEndpoint(), $request);
|
$response = $this->client->request('POST', 'https://'.$this->getEndpoint(), $request);
|
||||||
|
|
||||||
$result = new \SimpleXMLElement($response->getContent(false));
|
$result = new \SimpleXMLElement($response->getContent(false));
|
||||||
|
@ -5,6 +5,7 @@ CHANGELOG
|
|||||||
---
|
---
|
||||||
|
|
||||||
* added the `mailer` monolog channel and set it on all transport definitions
|
* added the `mailer` monolog channel and set it on all transport definitions
|
||||||
|
* Add support for `X-SES-SOURCE-ARN` in `symfony/amazon-mailer`
|
||||||
|
|
||||||
5.2.0
|
5.2.0
|
||||||
-----
|
-----
|
||||||
|
Reference in New Issue
Block a user