__('MailPoet API key is invalid!', 'mailpoet') ); } function getErrorForResult(array $result, $subscribers, $sender = null, $newsletter = null) { $level = MailerError::LEVEL_HARD; $operation = MailerError::OPERATION_SEND; $retry_interval = null; $subscribers_errors = []; $result_code = !empty($result['code']) ? $result['code'] : null; switch ($result_code) { case API::RESPONSE_CODE_NOT_ARRAY: $message = WPFunctions::get()->__('JSON input is not an array', 'mailpoet'); break; case API::RESPONSE_CODE_PAYLOAD_ERROR: $result_parsed = json_decode($result['message'], true); $message = WPFunctions::get()->__('Error while sending.', 'mailpoet'); if (!is_array($result_parsed)) { $message .= ' ' . $result['message']; break; } try { $subscribers_errors = $this->getSubscribersErrors($result_parsed, $subscribers); $level = MailerError::LEVEL_SOFT; } catch (InvalidArgumentException $e) { $message .= ' ' . $e->getMessage(); } break; case API::RESPONSE_CODE_TEMPORARY_UNAVAILABLE: $message = WPFunctions::get()->__('Email service is temporarily not available, please try again in a few minutes.', 'mailpoet'); $retry_interval = self::TEMPORARY_UNAVAILABLE_RETRY_INTERVAL; break; case API::RESPONSE_CODE_CAN_NOT_SEND: if ($result['message'] === MailerError::MESSAGE_EMAIL_NOT_AUTHORIZED) { $operation = MailerError::OPERATION_AUTHORIZATION; $message = $this->getUnauthorizedEmailMessage($sender, $newsletter[0]); } else { $message = $this->getAccountBannedMessage(); } break; case API::RESPONSE_CODE_KEY_INVALID: case API::RESPONSE_CODE_PAYLOAD_TOO_BIG: default: $message = $result['message']; } return new MailerError($operation, $level, $message, $retry_interval, $subscribers_errors); } private function getSubscribersErrors($result_parsed, $subscribers) { $errors = []; foreach ($result_parsed as $result_error) { if (!is_array($result_error) || !isset($result_error['index']) || !isset($subscribers[$result_error['index']])) { throw new InvalidArgumentException( WPFunctions::get()->__('Invalid MSS response format.', 'mailpoet')); } $subscriber_errors = []; if (isset($result_error['errors']) && is_array($result_error['errors'])) { array_walk_recursive($result_error['errors'], function($item) use (&$subscriber_errors) { $subscriber_errors[] = $item; }); } $message = join(', ', $subscriber_errors); $errors[] = new SubscriberError($subscribers[$result_error['index']], $message); } return $errors; } private function getUnauthorizedEmailMessage($sender, $newsletter) { $email = $sender ? $sender['from_email'] : null; $message = sprintf(WPFunctions::get()->__('

The MailPoet Sending Service did not send your latest email because the address %s is not yet authorized.

', 'mailpoet'), $email ?: WPFunctions::get()->__('Unknown address')); $message .= '

'; $message .= Helpers::replaceLinkTags( WPFunctions::get()->__('[link]Authorize your email in your account now.[/link]', 'mailpoet'), 'https://account.mailpoet.com/authorization', array( 'class' => 'button button-primary', 'target' => '_blank', 'rel' => 'noopener noreferrer', ) ); $message .= '   '; $message .= '

'; $message .= ""; return $message; } private function getAccountBannedMessage() { return Helpers::replaceLinkTags( WPFunctions::get()->__('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', 'rel' => 'noopener noreferrer', ) ); } }