Skip to content

Commit 8c01887

Browse files
committed
[Mailer] [Mailgun] Fix expecting payload without tags or user variables
1 parent ae99170 commit 8c01887

File tree

4 files changed

+52
-6
lines changed

4 files changed

+52
-6
lines changed

RemoteEvent/MailgunPayloadConverter.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ public function convert(array $payload): AbstractMailerEvent
5555
}
5656
$event->setDate($date);
5757
$event->setRecipientEmail($payload['recipient']);
58-
$event->setMetadata($payload['user-variables']);
59-
$event->setTags($payload['tags']);
58+
$event->setMetadata($payload['user-variables'] ?? []);
59+
$event->setTags($payload['tags'] ?? []);
6060

6161
return $event;
6262
}
@@ -78,10 +78,10 @@ private function getReason(array $payload): string
7878
if ('' !== ($payload['delivery-status']['description'] ?? '')) {
7979
return $payload['delivery-status']['description'];
8080
}
81-
if ('' !== $payload['delivery-status']['message']) {
81+
if ('' !== ($payload['delivery-status']['message'] ?? '')) {
8282
return $payload['delivery-status']['message'];
8383
}
84-
if ('' !== $payload['reason']) {
84+
if ('' !== ($payload['reason'] ?? '')) {
8585
return $payload['reason'];
8686
}
8787

Tests/Webhook/Fixtures/accepted.json

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"signature":{
3+
"token": "885894756b6c371a377f5f9516d60a4db497ad27d4931ed215",
4+
"timestamp": "1661621710",
5+
"signature": "606307bb55b72686b1b2a2c8c37ae6e6ec89496592bac4a4eee5a346337d04a5"
6+
},
7+
"event-data":{
8+
"event":"accepted",
9+
"id":"4o7-z86dSkSI54c6IudeuA",
10+
"timestamp":1707402341.91242,
11+
"api-key-id":"##REDACTED##",
12+
"envelope":{
13+
"sender":"[email protected]",
14+
"targets":"ben@##REDACTED##",
15+
"transport":"smtp"
16+
},
17+
"flags":{
18+
"is-authenticated":true,
19+
"is-test-mode":false
20+
},
21+
"message":{
22+
"headers":{
23+
"message-id":"##REDACTED##",
24+
"from":"\"Here, have this\" <[email protected]>",
25+
26+
"subject":"Please verify your email address."
27+
},
28+
"size":2411
29+
},
30+
"storage":{
31+
"key":"##REDACTED##",
32+
"url":"https:\/\/storage-us-east4.api.mailgun.net\/v3\/domains\/##REDACTED##"
33+
},
34+
"method":"HTTP",
35+
"log-level":"info",
36+
"recipient":"[email protected]",
37+
"recipient-domain":"example.com"
38+
}
39+
}

Tests/Webhook/Fixtures/accepted.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
use Symfony\Component\RemoteEvent\Event\Mailer\MailerDeliveryEvent;
4+
5+
$wh = new MailerDeliveryEvent(MailerDeliveryEvent::RECEIVED, '4o7-z86dSkSI54c6IudeuA', json_decode(file_get_contents(str_replace('.php', '.json', __FILE__)), true, flags: JSON_THROW_ON_ERROR)['event-data']);
6+
$wh->setRecipientEmail('[email protected]');
7+
$wh->setDate(\DateTimeImmutable::createFromFormat('U.u', '1707402341.91242'));
8+
9+
return $wh;

Webhook/MailgunRequestParser.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ protected function doParse(Request $request, #[\SensitiveParameter] string $secr
5050
|| !isset($content['signature']['token'])
5151
|| !isset($content['signature']['signature'])
5252
|| !isset($content['event-data']['event'])
53-
|| !isset($content['event-data']['tags'])
54-
|| !isset($content['event-data']['user-variables'])
5553
) {
5654
throw new RejectWebhookException(406, 'Payload is malformed.');
5755
}

0 commit comments

Comments
 (0)