You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Marcus Bointon edited this page Jan 5, 2023
·
3 revisions
The SMTP class is usable by itself. It only provides basic SMTP commands and does not provide higher-level operations like "send a message" that involves a sequence of commands - that is left to the calling code, which is typically the PHPMailer class. Historically this SMTP class was a hard-coded dependency from PHPMailer, which made it difficult to substitute your own subclass or reimplementation. Fortunately that changed, and it's now possible to override the SMTP class that PHPMailer uses.
PHPMailer 6.0+
PHPMailer 6.0 added a method that allows you to inject your own SMTP implementation:
Note that the instance you inject must be an instance or a subclass of the PHPMailer\PHPMailer\SMTP class.
Older PHPMailer versions
It's slightly fiddly in older versions of PHPMailer as it was done in a way that would not break backward compatibility. You need to override the PHPMailer class to use a custom SMTP class.
Given an SMTP subclass:
class mySMTP extendsSMTP {
//Custom stuff...
}
Create a PHPMailer subclass and override the getSMTPInstance() method to point at it:
class myMailer extends PHPMailer {
publicfunctiongetSMTPInstance()
{
if (!is_object($this->smtp)) {
$this->smtp = newmySMTP;
}
return$this->smtp;
}
}
Now your myMailer instance will use your mySMTP class instead of the default one.