<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing namespace MailPoet\API\JSON\v1; if (!defined('ABSPATH')) exit; use MailPoet\API\JSON\Endpoint as APIEndpoint; use MailPoet\API\JSON\Error as APIError; use MailPoet\Config\AccessControl; use MailPoet\Mailer\MailerFactory; use MailPoet\Mailer\MailerLog; use MailPoet\Mailer\MetaInfo; use MailPoet\Services\AuthorizedEmailsController; use MailPoet\Services\AuthorizedSenderDomainController; use MailPoet\Settings\SettingsController; class Mailer extends APIEndpoint { /** @var AuthorizedEmailsController */ private $authorizedEmailsController; /** @var SettingsController */ private $settings; /** @var MetaInfo */ private $mailerMetaInfo; /** @var MailerFactory */ private $mailerFactory; /** @var AuthorizedSenderDomainController */ private $senderDomainController; public $permissions = [ 'global' => AccessControl::PERMISSION_MANAGE_EMAILS, ]; public function __construct( AuthorizedEmailsController $authorizedEmailsController, SettingsController $settings, MailerFactory $mailerFactory, MetaInfo $mailerMetaInfo, AuthorizedSenderDomainController $senderDomainController ) { $this->authorizedEmailsController = $authorizedEmailsController; $this->settings = $settings; $this->mailerFactory = $mailerFactory; $this->mailerMetaInfo = $mailerMetaInfo; $this->senderDomainController = $senderDomainController; } public function send($data = []) { try { $mailer = $this->mailerFactory->buildMailer( $data['mailer'] ?? null, $data['sender'] ?? null, $data['reply_to'] ?? null ); // report this as 'sending_test' in metadata since this endpoint is only used to test sending methods for now $extraParams = [ 'meta' => $this->mailerMetaInfo->getSendingTestMetaInfo(), ]; $result = $mailer->send($data['newsletter'], $data['subscriber'], $extraParams); } catch (\Exception $e) { return $this->errorResponse([ $e->getCode() => $e->getMessage(), ]); } if ($result['response'] === false) { $error = sprintf( // translators: %s is the error message. __('The email could not be sent: %s', 'mailpoet'), $result['error']->getMessage() ); return $this->errorResponse([APIError::BAD_REQUEST => $error]); } else { return $this->successResponse(null); } } public function resumeSending() { if ($this->settings->get(AuthorizedEmailsController::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING)) { $this->authorizedEmailsController->checkAuthorizedEmailAddresses(); } MailerLog::resumeSending(); return $this->successResponse(null); } public function getAuthorizedEmailAddresses() { $authorizedEmails = $this->authorizedEmailsController->getAuthorizedEmailAddresses(); return $this->successResponse($authorizedEmails); } public function getVerifiedSenderDomains() { $verifiedDomains = $this->senderDomainController->getVerifiedSenderDomains(); return $this->successResponse($verifiedDomains); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Analytics.php | File | 668 B | 0644 |
|
AutomatedLatestContent.php | File | 3.98 KB | 0644 |
|
AutomaticEmails.php | File | 2.83 KB | 0644 |
|
Captcha.php | File | 951 B | 0644 |
|
Coupons.php | File | 1.8 KB | 0644 |
|
CustomFields.php | File | 2.98 KB | 0644 |
|
DynamicSegments.php | File | 11.93 KB | 0644 |
|
FeatureFlags.php | File | 1.42 KB | 0644 |
|
Forms.php | File | 11.3 KB | 0644 |
|
Help.php | File | 2.8 KB | 0644 |
|
ImportExport.php | File | 5.76 KB | 0644 |
|
Mailer.php | File | 3.1 KB | 0644 |
|
NewsletterLinks.php | File | 1.01 KB | 0644 |
|
NewsletterTemplates.php | File | 4.29 KB | 0644 |
|
Newsletters.php | File | 16.01 KB | 0644 |
|
Premium.php | File | 3.03 KB | 0644 |
|
RedirectResponse.php | File | 347 B | 0644 |
|
Segments.php | File | 12.19 KB | 0644 |
|
SendingQueue.php | File | 9.93 KB | 0644 |
|
SendingTaskSubscribers.php | File | 5.42 KB | 0644 |
|
Services.php | File | 12.35 KB | 0644 |
|
Settings.php | File | 16.49 KB | 0644 |
|
Setup.php | File | 1.19 KB | 0644 |
|
SubscriberStats.php | File | 4.08 KB | 0644 |
|
Subscribers.php | File | 12.31 KB | 0644 |
|
Tags.php | File | 1.34 KB | 0644 |
|
UserFlags.php | File | 1.01 KB | 0644 |
|
WoocommerceSettings.php | File | 870 B | 0644 |
|
index.php | File | 6 B | 0644 |
|