Skip to content

Commit b637e48

Browse files
committed
feat: start using modern phpmailer classes
1 parent b9d6381 commit b637e48

5 files changed

Lines changed: 14 additions & 9 deletions

File tree

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"friendsofphp/php-cs-fixer": "^3.0",
2828
"php-mock/php-mock-phpunit": "^2.6",
2929
"php-stubs/wp-cli-stubs": "^2.8",
30-
"phpmailer/phpmailer": "^5.2",
30+
"phpmailer/phpmailer": "^7.0",
3131
"phpunit/phpunit": "^8.0 || ^9.0",
3232
"symfony/polyfill-php80": "^1.28",
3333
"szepeviktor/phpstan-wordpress": "^1.0"

pluggable.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
* file that was distributed with this source code.
1212
*/
1313

14+
use PHPMailer\PHPMailer\Exception;
1415
use Ymir\Plugin\Email\Email;
1516
use Ymir\Plugin\Email\EmailClientInterface;
1617
use Ymir\Plugin\Plugin;
@@ -68,7 +69,7 @@ function wp_mail($to, $subject, $message, $headers = '', $attachments = []): boo
6869
} catch (\Exception $exception) {
6970
$errorData = compact('to', 'subject', 'message', 'headers', 'attachments');
7071

71-
if ($exception instanceof phpmailerException) {
72+
if ($exception instanceof Exception) {
7273
$errorData['phpmailer_exception_code'] = $exception->getCode();
7374
}
7475

src/Configuration/WordPressConfiguration.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
namespace Ymir\Plugin\Configuration;
1515

16+
use PHPMailer\PHPMailer\Exception;
17+
use PHPMailer\PHPMailer\PHPMailer;
1618
use Ymir\Plugin\DependencyInjection\Container;
1719
use Ymir\Plugin\DependencyInjection\ContainerConfigurationInterface;
1820

@@ -103,17 +105,17 @@ public function modify(Container $container)
103105
return $container['is_multisite'] && function_exists('is_subdomain_install') && is_subdomain_install();
104106
});
105107
$container['phpmailer'] = function () {
106-
if (!class_exists(\PHPMailer\PHPMailer\PHPMailer::class) && file_exists(ABSPATH.WPINC.'/PHPMailer/PHPMailer.php')) {
108+
if (!class_exists(PHPMailer::class) && file_exists(ABSPATH.WPINC.'/PHPMailer/PHPMailer.php')) {
107109
require_once ABSPATH.WPINC.'/PHPMailer/PHPMailer.php';
108110
require_once ABSPATH.WPINC.'/PHPMailer/Exception.php';
109111

110-
class_alias(\PHPMailer\PHPMailer\PHPMailer::class, 'PHPMailer');
111-
class_alias(\PHPMailer\PHPMailer\Exception::class, 'phpmailerException');
112+
class_alias(PHPMailer::class, 'PHPMailer');
113+
class_alias(Exception::class, 'phpmailerException');
112114
} elseif (!class_exists(\PHPMailer::class)) {
113115
require_once ABSPATH.WPINC.'/class-phpmailer.php';
114116
}
115117

116-
return new \PHPMailer(true);
118+
return new PHPMailer(true);
117119
};
118120
$container['plupload_error_messages'] = $container->service(function () {
119121
return [

src/Email/Email.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
namespace Ymir\Plugin\Email;
1515

16+
use PHPMailer\PHPMailer\PHPMailer;
1617
use Ymir\Plugin\Attachment\AttachmentFileManager;
1718
use Ymir\Plugin\EventManagement\EventManager;
1819
use Ymir\Plugin\Support\Collection;
@@ -57,14 +58,14 @@ class Email
5758
/**
5859
* WordPress PHPMailer object.
5960
*
60-
* @var \PHPMailer
61+
* @var PHPMailer
6162
*/
6263
private $mailer;
6364

6465
/**
6566
* Constructor.
6667
*/
67-
public function __construct(EventManager $eventManager, string $defaultFromAddress, AttachmentFileManager $fileManager, \PHPMailer $mailer, string $defaultCharset = 'UTF-8', string $defaultContentType = 'text/plain')
68+
public function __construct(EventManager $eventManager, string $defaultFromAddress, AttachmentFileManager $fileManager, PHPMailer $mailer, string $defaultCharset = 'UTF-8', string $defaultContentType = 'text/plain')
6869
{
6970
$this->defaultCharset = $defaultCharset;
7071
$this->defaultContentType = $defaultContentType;

tests/Mock/PHPMailerMockTrait.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
namespace Ymir\Plugin\Tests\Mock;
1515

16+
use PHPMailer\PHPMailer\PHPMailer;
1617
use PHPUnit\Framework\MockObject\MockObject;
1718

1819
trait PHPMailerMockTrait
@@ -22,7 +23,7 @@ trait PHPMailerMockTrait
2223
*/
2324
private function getPHPMailerMock(): MockObject
2425
{
25-
return $this->getMockBuilder(\PHPMailer::class)
26+
return $this->getMockBuilder(PHPMailer::class)
2627
->disableOriginalConstructor()
2728
->getMock();
2829
}

0 commit comments

Comments
 (0)