Prevent using invalid bounce email address
[MAILPOET-2933]
This commit is contained in:
committed by
Veljko V
parent
6c63a562d1
commit
03400bc4f7
@@ -15,6 +15,7 @@ use MailPoet\Mailer\Methods\SendGrid;
|
|||||||
use MailPoet\Mailer\Methods\SMTP;
|
use MailPoet\Mailer\Methods\SMTP;
|
||||||
use MailPoet\Services\AuthorizedEmailsController;
|
use MailPoet\Services\AuthorizedEmailsController;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
class Mailer {
|
class Mailer {
|
||||||
public $mailerConfig;
|
public $mailerConfig;
|
||||||
@@ -24,6 +25,10 @@ class Mailer {
|
|||||||
public $mailerInstance;
|
public $mailerInstance;
|
||||||
/** @var SettingsController */
|
/** @var SettingsController */
|
||||||
private $settings;
|
private $settings;
|
||||||
|
|
||||||
|
/** @var WPFunctions */
|
||||||
|
private $wp;
|
||||||
|
|
||||||
const MAILER_CONFIG_SETTING_NAME = 'mta';
|
const MAILER_CONFIG_SETTING_NAME = 'mta';
|
||||||
const SENDING_LIMIT_INTERVAL_MULTIPLIER = 60;
|
const SENDING_LIMIT_INTERVAL_MULTIPLIER = 60;
|
||||||
const METHOD_MAILPOET = 'MailPoet';
|
const METHOD_MAILPOET = 'MailPoet';
|
||||||
@@ -32,11 +37,15 @@ class Mailer {
|
|||||||
const METHOD_PHPMAIL = 'PHPMail';
|
const METHOD_PHPMAIL = 'PHPMail';
|
||||||
const METHOD_SMTP = 'SMTP';
|
const METHOD_SMTP = 'SMTP';
|
||||||
|
|
||||||
public function __construct(SettingsController $settings = null) {
|
public function __construct(SettingsController $settings = null, WPFunctions $wp = null) {
|
||||||
if (!$settings) {
|
if (!$settings) {
|
||||||
$settings = SettingsController::getInstance();
|
$settings = SettingsController::getInstance();
|
||||||
}
|
}
|
||||||
|
if (!$wp) {
|
||||||
|
$wp = WPFunctions::get();
|
||||||
|
}
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
|
$this->wp = $wp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function init($mailer = false, $sender = false, $replyTo = false, $returnPath = false) {
|
public function init($mailer = false, $sender = false, $replyTo = false, $returnPath = false) {
|
||||||
@@ -156,9 +165,11 @@ class Mailer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getReturnPathAddress($returnPath) {
|
public function getReturnPathAddress($returnPath) {
|
||||||
return ($returnPath) ?
|
if ($returnPath) {
|
||||||
$returnPath :
|
return $returnPath;
|
||||||
$this->settings->get('bounce.address');
|
}
|
||||||
|
$bounceAddress = $this->settings->get('bounce.address');
|
||||||
|
return $this->wp->isEmail($bounceAddress) ? $bounceAddress : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -201,6 +201,16 @@ class MailerTest extends \MailPoetTest {
|
|||||||
expect($result['response'])->true();
|
expect($result['response'])->true();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testItIgnoresInvalidBounceAddress() {
|
||||||
|
$this->settings->set('bounce.address', 'ok@address.com');
|
||||||
|
$mailer = new Mailer();
|
||||||
|
$mailer->init($this->mailer, $this->sender, $this->replyTo);
|
||||||
|
expect($mailer->returnPath)->equals('ok@address.com');
|
||||||
|
$this->settings->set('bounce.address', 'invalid');
|
||||||
|
$mailer->init($this->mailer, $this->sender, $this->replyTo);
|
||||||
|
expect($mailer->returnPath)->null();
|
||||||
|
}
|
||||||
|
|
||||||
public function _after() {
|
public function _after() {
|
||||||
$this->diContainer->get(SettingsRepository::class)->truncate();
|
$this->diContainer->get(SettingsRepository::class)->truncate();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user