diff --git a/assets/js/src/newsletters/listings/mixins.jsx b/assets/js/src/newsletters/listings/mixins.jsx
index 29c7f1550b..ca22301320 100644
--- a/assets/js/src/newsletters/listings/mixins.jsx
+++ b/assets/js/src/newsletters/listings/mixins.jsx
@@ -410,9 +410,11 @@ const MailerMixin = {
mailerErrorNotice += ` ${MailPoet.I18n.t('mailerErrorCode')
.replace('%$1s', state.meta.mta_log.error.error_code)}`;
}
+ // eslint-disable-next-line react/no-danger
+ mailerErrorNotice =
;
return (
-
{ mailerErrorNotice }
+ { mailerErrorNotice }
{ mailerCheckSettingsNotice }
'_blank')
+ );
+ break;
case API::RESPONSE_CODE_KEY_INVALID:
case API::RESPONSE_CODE_PAYLOAD_TOO_BIG:
default:
diff --git a/lib/Services/Bridge/API.php b/lib/Services/Bridge/API.php
index e97352e295..9e59961b41 100644
--- a/lib/Services/Bridge/API.php
+++ b/lib/Services/Bridge/API.php
@@ -20,6 +20,7 @@ class API {
const RESPONSE_CODE_NOT_ARRAY = 422;
const RESPONSE_CODE_PAYLOAD_TOO_BIG = 413;
const RESPONSE_CODE_PAYLOAD_ERROR = 400;
+ const RESPONSE_CODE_BANNED_ACCOUNT = 403;
private $api_key;
@@ -85,6 +86,7 @@ class API {
'message' => $result->get_error_message()
);
}
+
$response_code = WPFunctions::wpRemoteRetrieveResponseCode($result);
if($response_code !== 201) {
$response = (WPFunctions::wpRemoteRetrieveBody($result)) ?
diff --git a/tests/integration/Mailer/Methods/ErrorMappers/MailPoetMapperTest.php b/tests/integration/Mailer/Methods/ErrorMappers/MailPoetMapperTest.php
index 697f18d393..71f8bca3be 100644
--- a/tests/integration/Mailer/Methods/ErrorMappers/MailPoetMapperTest.php
+++ b/tests/integration/Mailer/Methods/ErrorMappers/MailPoetMapperTest.php
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Mailer\Methods\ErrorMappers;
use MailPoet\Mailer\MailerError;
use MailPoet\Mailer\Methods\ErrorMappers\MailPoetMapper;
use MailPoet\Services\Bridge\API;
+use MailPoet\Util\Helpers;
class MailPoetMapperTest extends \MailPoetTest {
/** @var MailPoetMapper */
@@ -39,6 +40,24 @@ class MailPoetMapperTest extends \MailPoetTest {
expect($error->getMessage())->equals('JSON input is not an array');
}
+ function testGetErrorBannedAccount() {
+ $api_result = [
+ 'code' => API::RESPONSE_CODE_BANNED_ACCOUNT,
+ 'status' => API::SENDING_STATUS_SEND_ERROR,
+ 'message' => 'this is a spam',
+ ];
+ $error = $this->mapper->getErrorForResult($api_result, $this->subscribers);
+
+ expect($error)->isInstanceOf(MailerError::class);
+ expect($error->getOperation())->equals(MailerError::OPERATION_SEND);
+ expect($error->getLevel())->equals(MailerError::LEVEL_HARD);
+ expect($error->getMessage())->equals(Helpers::replaceLinkTags(
+ __('You currently are not permitted to send any emails with MailPoet Sending Service, which may have happened due to poor deliverability. Please [link]contact our support team[/link] to resolve the issue.', 'mailpoet'),
+ 'https://www.mailpoet.com/support/',
+ array('target' => '_blank')
+ ));
+ }
+
function testGetErrorPayloadTooBig() {
$api_result = [
'code' => API::RESPONSE_CODE_PAYLOAD_TOO_BIG,