Select Git revision
HookableParent.php
-
Bartek Jaskulski authored
Signed-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
Bartek Jaskulski authoredSigned-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
WPMailer.php 2.90 KiB
<?php
namespace WPDesk\Library\WPEmail;
use Exception;
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
use WP_Error;
use WPDesk\Library\WPEmail\Abstracts\Email;
use WPDesk\Library\WPEmail\Abstracts\Mailer;
use WPDesk\Library\WPEmail\Exceptions\MailerException;
use WPDesk\View\Renderer\Renderer;
use WPDesk\View\Renderer\SimplePhpRenderer;
use WPDesk\View\Resolver\ChainResolver;
use WPDesk\View\Resolver\DirResolver;
class WPMailer implements Mailer {
/**
* @var LoggerInterface
*/
private $logger;
/**
* @var Renderer
*/
private $renderer;
public function __construct( LoggerInterface $logger ) {
$this->logger = $logger;
$this->init_renderer();
}
public function init_renderer() {
$resolver = new ChainResolver();
$resolver->appendResolver( new DirResolver( __DIR__ . '/templates' ) );
$renderer = new SimplePhpRenderer( $resolver );
$this->set_renderer( $renderer );
}
public function set_renderer( Renderer $renderer ) {
$this->renderer = $renderer;
}
public function get_renderer(): Renderer {
return $this->renderer;
}
/** @return void */
public function send( Email $email ): void {
$mailer_from = $email->get_from();
add_filter(
'wp_mail_from',
$from_cb = static function ( $from ) use ( $mailer_from ) {
return $mailer_from;
}
);
$mailer_from_name = $email->get_from_name();
add_filter(
'wp_mail_from_name',
$from_name_cb = static function ( $from_name ) use ( $mailer_from_name ) {
return $mailer_from_name;
}
);
add_action( 'wp_mail_failed', [ $this, 'catch_error' ] );
$email_template = new Template( $this->logger, $this->get_renderer(), $email->get_template_attributes() );
try {