Move logic for return path fallback address from method classes to factory
[MAILPOET-4115]
This commit is contained in:
committed by
Veljko V
parent
b8bfa60634
commit
36edab34e6
@@ -47,7 +47,7 @@ class MailerFactory {
|
||||
$sender = $this->getSenderNameAndAddress($sender);
|
||||
$replyTo = $this->getReplyToNameAndAddress($sender, $replyTo);
|
||||
$mailerConfig = $mailerConfig ?? $this->getMailerConfig();
|
||||
$returnPath = $returnPath ?? $this->getReturnPathAddress();
|
||||
$returnPath = $returnPath ?? $this->getReturnPathAddress($sender);
|
||||
switch ($mailerConfig['method']) {
|
||||
case Mailer::METHOD_AMAZONSES:
|
||||
$mailerInstance = new AmazonSES(
|
||||
@@ -147,9 +147,9 @@ class MailerFactory {
|
||||
];
|
||||
}
|
||||
|
||||
private function getReturnPathAddress(): ?string {
|
||||
private function getReturnPathAddress(array $sender): ?string {
|
||||
$bounceAddress = $this->settings->get('bounce.address');
|
||||
return $this->wp->isEmail($bounceAddress) ? $bounceAddress : null;
|
||||
return $this->wp->isEmail($bounceAddress) ? $bounceAddress : $sender['from_email'];
|
||||
}
|
||||
|
||||
private function encodeAddressNamePart($name): string {
|
||||
|
@@ -83,9 +83,7 @@ class AmazonSES implements MailerMethod {
|
||||
$this->url = 'https://' . $this->awsEndpoint;
|
||||
$this->sender = $sender;
|
||||
$this->replyTo = $replyTo;
|
||||
$this->returnPath = ($returnPath) ?
|
||||
$returnPath :
|
||||
$this->sender['from_email'];
|
||||
$this->returnPath = $returnPath;
|
||||
$this->date = gmdate('Ymd\THis\Z');
|
||||
$this->dateWithoutTime = gmdate('Ymd');
|
||||
$this->errorMapper = $errorMapper;
|
||||
|
@@ -29,9 +29,7 @@ class PHPMail implements MailerMethod {
|
||||
) {
|
||||
$this->sender = $sender;
|
||||
$this->replyTo = $replyTo;
|
||||
$this->returnPath = ($returnPath) ?
|
||||
$returnPath :
|
||||
$this->sender['from_email'];
|
||||
$this->returnPath = $returnPath;
|
||||
$this->mailer = $this->buildMailer();
|
||||
$this->errorMapper = $errorMapper;
|
||||
$this->blacklist = new BlacklistCheck();
|
||||
|
@@ -55,9 +55,7 @@ class SMTP implements MailerMethod {
|
||||
$this->encryption = $encryption;
|
||||
$this->sender = $sender;
|
||||
$this->replyTo = $replyTo;
|
||||
$this->returnPath = ($returnPath) ?
|
||||
$returnPath :
|
||||
$this->sender['from_email'];
|
||||
$this->returnPath = $returnPath;
|
||||
$this->mailer = $this->buildMailer();
|
||||
$this->mailerLogger = new Swift_Plugins_Loggers_ArrayLogger();
|
||||
$this->mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($this->mailerLogger));
|
||||
|
@@ -153,6 +153,14 @@ class MailerFactoryTest extends \MailPoetTest {
|
||||
]);
|
||||
}
|
||||
|
||||
public function testItIgnoresInvalidBounceAddressAndUsesSenderAddressInstead() {
|
||||
$this->settings->set('bounce.address', 'invalid');
|
||||
$mailer = $this->factory->getDefaultMailer();
|
||||
$mailerMethod = $mailer->mailerInstance;
|
||||
$this->assertInstanceOf(PHPMail::class, $mailerMethod);
|
||||
expect($mailerMethod->returnPath)->equals('sender@email.com');
|
||||
}
|
||||
|
||||
public function testItUsesSenderAddressInReplyToInCaseReplyToHasOnlyName() {
|
||||
$this->settings->set('reply_to', ['name' => 'Reply To']);
|
||||
$mailer = $this->factory->getDefaultMailer();
|
||||
|
@@ -79,19 +79,6 @@ class AmazonSESTest extends \MailPoetTest {
|
||||
expect(preg_match('!^\d{8}$!', $this->mailer->dateWithoutTime))->equals(1);
|
||||
}
|
||||
|
||||
public function testWhenReturnPathIsNullItIsSetToSenderEmail() {
|
||||
$mailer = new AmazonSES(
|
||||
$this->settings['region'],
|
||||
$this->settings['access_key'],
|
||||
$this->settings['secret_key'],
|
||||
$this->sender,
|
||||
$this->replyTo,
|
||||
$returnPath = false,
|
||||
new AmazonSESMapper()
|
||||
);
|
||||
expect($mailer->returnPath)->equals($this->sender['from_email']);
|
||||
}
|
||||
|
||||
public function testItChecksForValidRegion() {
|
||||
try {
|
||||
$mailer = new AmazonSES(
|
||||
|
@@ -58,16 +58,6 @@ class PHPMailTest extends \MailPoetTest {
|
||||
expect($mailer->Mailer)->equals('mail'); // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
|
||||
}
|
||||
|
||||
public function testWhenReturnPathIsNullItIsSetToSenderEmail() {
|
||||
$mailer = new PHPMail(
|
||||
$this->sender,
|
||||
$this->replyTo,
|
||||
$returnPath = false,
|
||||
new PHPMailMapper()
|
||||
);
|
||||
expect($mailer->returnPath)->equals($this->sender['from_email']);
|
||||
}
|
||||
|
||||
public function testItCanConfigureMailerWithMessage() {
|
||||
$mailer = $this->mailer
|
||||
->configureMailerWithMessage($this->newsletter, $this->subscriber, $this->extraParams);
|
||||
|
@@ -87,22 +87,6 @@ class SMTPTest extends \MailPoetTest {
|
||||
->equals($this->settings['encryption']);
|
||||
}
|
||||
|
||||
public function testWhenReturnPathIsNullItIsSetToSenderEmail() {
|
||||
$mailer = new SMTP(
|
||||
$this->settings['host'],
|
||||
$this->settings['port'],
|
||||
$this->settings['authentication'],
|
||||
$this->settings['encryption'],
|
||||
$this->sender,
|
||||
$this->replyTo,
|
||||
$returnPath = false,
|
||||
new SMTPMapper(),
|
||||
$this->settings['login'],
|
||||
$this->settings['password']
|
||||
);
|
||||
expect($mailer->returnPath)->equals($this->sender['from_email']);
|
||||
}
|
||||
|
||||
public function testItCanCreateMessage() {
|
||||
$message = $this->mailer
|
||||
->createMessage($this->newsletter, $this->subscriber, $this->extraParams);
|
||||
|
Reference in New Issue
Block a user