[Mailer] better handling of HttpClient's DecodingExceptionInterface
This commit is contained in:
parent
2c3af6220d
commit
154f7e9839
|
@ -18,6 +18,7 @@ use Symfony\Component\Mailer\SentMessage;
|
|||
use Symfony\Component\Mailer\Transport\AbstractApiTransport;
|
||||
use Symfony\Component\Mime\Email;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Symfony\Contracts\HttpClient\ResponseInterface;
|
||||
|
@ -52,6 +53,8 @@ class MandrillApiTransport extends AbstractApiTransport
|
|||
try {
|
||||
$statusCode = $response->getStatusCode();
|
||||
$result = $response->toArray(false);
|
||||
} catch (DecodingExceptionInterface $e) {
|
||||
throw new HttpTransportException('Unable to send an email: '.$response->getContent(false).sprintf(' (code %d).', $statusCode), $response);
|
||||
} catch (TransportExceptionInterface $e) {
|
||||
throw new HttpTransportException('Could not reach the remote Mandrill server.', $response, 0, $e);
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ use Symfony\Component\Mailer\SentMessage;
|
|||
use Symfony\Component\Mailer\Transport\AbstractHttpTransport;
|
||||
use Symfony\Component\Mime\Address;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Symfony\Contracts\HttpClient\ResponseInterface;
|
||||
|
@ -59,6 +60,8 @@ class MandrillHttpTransport extends AbstractHttpTransport
|
|||
try {
|
||||
$statusCode = $response->getStatusCode();
|
||||
$result = $response->toArray(false);
|
||||
} catch (DecodingExceptionInterface $e) {
|
||||
throw new HttpTransportException('Unable to send an email: '.$response->getContent(false).sprintf(' (code %d).', $statusCode), $response);
|
||||
} catch (TransportExceptionInterface $e) {
|
||||
throw new HttpTransportException('Could not reach the remote Mandrill server.', $response, 0, $e);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ use Symfony\Component\Mailer\Transport\AbstractApiTransport;
|
|||
use Symfony\Component\Mime\Email;
|
||||
use Symfony\Component\Mime\Part\Multipart\FormDataPart;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Symfony\Contracts\HttpClient\ResponseInterface;
|
||||
|
@ -66,16 +67,14 @@ class MailgunApiTransport extends AbstractApiTransport
|
|||
try {
|
||||
$statusCode = $response->getStatusCode();
|
||||
$result = $response->toArray(false);
|
||||
} catch (DecodingExceptionInterface $e) {
|
||||
throw new HttpTransportException('Unable to send an email: '.$response->getContent(false).sprintf(' (code %d).', $statusCode), $response);
|
||||
} catch (TransportExceptionInterface $e) {
|
||||
throw new HttpTransportException('Could not reach the remote Mailgun server.', $response, 0, $e);
|
||||
}
|
||||
|
||||
if (200 !== $statusCode) {
|
||||
if ('application/json' === $response->getHeaders(false)['content-type'][0]) {
|
||||
throw new HttpTransportException('Unable to send an email: '.$result['message'].sprintf(' (code %d).', $statusCode), $response);
|
||||
}
|
||||
|
||||
throw new HttpTransportException('Unable to send an email: '.$response->getContent(false).sprintf(' (code %d).', $statusCode), $response);
|
||||
throw new HttpTransportException('Unable to send an email: '.$result['message'].sprintf(' (code %d).', $statusCode), $response);
|
||||
}
|
||||
|
||||
$sentMessage->setMessageId($result['id']);
|
||||
|
|
|
@ -18,6 +18,7 @@ use Symfony\Component\Mailer\Transport\AbstractHttpTransport;
|
|||
use Symfony\Component\Mime\Part\DataPart;
|
||||
use Symfony\Component\Mime\Part\Multipart\FormDataPart;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Symfony\Contracts\HttpClient\ResponseInterface;
|
||||
|
@ -68,16 +69,14 @@ class MailgunHttpTransport extends AbstractHttpTransport
|
|||
try {
|
||||
$statusCode = $response->getStatusCode();
|
||||
$result = $response->toArray(false);
|
||||
} catch (DecodingExceptionInterface $e) {
|
||||
throw new HttpTransportException('Unable to send an email: '.$response->getContent(false).sprintf(' (code %d).', $statusCode), $response);
|
||||
} catch (TransportExceptionInterface $e) {
|
||||
throw new HttpTransportException('Could not reach the remote Mailgun server.', $response, 0, $e);
|
||||
}
|
||||
|
||||
if (200 !== $statusCode) {
|
||||
if ('application/json' === $response->getHeaders(false)['content-type'][0]) {
|
||||
throw new HttpTransportException('Unable to send an email: '.$result['message'].sprintf(' (code %d).', $statusCode), $response);
|
||||
}
|
||||
|
||||
throw new HttpTransportException('Unable to send an email: '.$response->getContent(false).sprintf(' (code %d).', $statusCode), $response);
|
||||
throw new HttpTransportException('Unable to send an email: '.$result['message'].sprintf(' (code %d).', $statusCode), $response);
|
||||
}
|
||||
|
||||
$message->setMessageId($result['id']);
|
||||
|
|
|
@ -18,6 +18,7 @@ use Symfony\Component\Mailer\SentMessage;
|
|||
use Symfony\Component\Mailer\Transport\AbstractApiTransport;
|
||||
use Symfony\Component\Mime\Email;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Symfony\Contracts\HttpClient\ResponseInterface;
|
||||
|
@ -56,6 +57,8 @@ class PostmarkApiTransport extends AbstractApiTransport
|
|||
try {
|
||||
$statusCode = $response->getStatusCode();
|
||||
$result = $response->toArray(false);
|
||||
} catch (DecodingExceptionInterface $e) {
|
||||
throw new HttpTransportException('Unable to send an email: '.$response->getContent(false).sprintf(' (code %d).', $statusCode), $response);
|
||||
} catch (TransportExceptionInterface $e) {
|
||||
throw new HttpTransportException('Could not reach the remote Postmark server.', $response, 0, $e);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ use Symfony\Component\Mailer\Transport\AbstractApiTransport;
|
|||
use Symfony\Component\Mime\Address;
|
||||
use Symfony\Component\Mime\Email;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Symfony\Contracts\HttpClient\ResponseInterface;
|
||||
|
@ -54,6 +55,8 @@ class SendgridApiTransport extends AbstractApiTransport
|
|||
try {
|
||||
$statusCode = $response->getStatusCode();
|
||||
$result = $response->toArray(false);
|
||||
} catch (DecodingExceptionInterface $e) {
|
||||
throw new HttpTransportException('Unable to send an email: '.$response->getContent(false).sprintf(' (code %d).', $statusCode), $response);
|
||||
} catch (TransportExceptionInterface $e) {
|
||||
throw new HttpTransportException('Could not reach the remote Sendgrid server.', $response, 0, $e);
|
||||
}
|
||||
|
|
Reference in New Issue