WP_PHPMailer
WordPress extension of PHPMailer providing internationalized error messages.
Since: 6.8.0
Source: wp-includes/class-wp-phpmailer.php
Extends: PHPMailerPHPMailerPHPMailer
Purpose
WP_PHPMailer overrides PHPMailer’s language handling to use WordPress’s internationalization system (__()). This ensures error messages are translated according to the site’s locale rather than PHPMailer’s built-in language files.
Constructor
public function __construct( $exceptions = false )
| Parameter | Type | Default | Description |
|---|---|---|---|
$exceptions |
bool | false |
Whether to throw exceptions for errors |
Calls parent constructor and immediately sets language strings.
Methods
setLanguage()
public static function setLanguage( $langcode = 'en', $lang_path = '' )
Overrides PHPMailer’s setLanguage() to populate static::$language with WordPress-translated strings.
| Parameter | Type | Default | Description |
|---|---|---|---|
$langcode |
string | 'en' |
Unused. Ignored by WordPress implementation |
$lang_path |
string | '' |
Unused. Ignored by WordPress implementation |
Returns: true (always)
Translated Error Messages
| Key | English Message |
|---|---|
authenticate |
SMTP Error: Could not authenticate. |
buggy_php |
Your version of PHP is affected by a bug… |
connect_host |
SMTP Error: Could not connect to SMTP host. |
data_not_accepted |
SMTP Error: Data not accepted. |
empty_message |
Message body empty |
encoding |
Unknown encoding: |
execute |
Could not execute: |
extension_missing |
Extension missing: |
file_access |
Could not access file: |
file_open |
File Error: Could not open file: |
from_failed |
The following From address failed: |
instantiate |
Could not instantiate mail function. |
invalid_address |
Invalid address: |
invalid_header |
Invalid header name or value |
invalid_hostentry |
Invalid host entry: |
invalid_host |
Invalid host: |
mailer_not_supported |
mailer is not supported. |
provide_address |
You must provide at least one recipient email address. |
recipients_failed |
SMTP Error: The following recipients failed: |
signing |
Signing Error: |
smtp_code |
SMTP code: |
smtp_code_ex |
Additional SMTP info: |
smtp_connect_failed |
SMTP connect() failed. |
smtp_detail |
Detail: |
smtp_error |
SMTP server error: |
variable_set |
Cannot set or reset variable: |
no_smtputf8 |
Server does not support SMTPUTF8 needed to send to Unicode addresses |
imap_recommended |
Using simplified address parser is not recommended… |
deprecated_argument |
Argument $useimap is deprecated |
Usage
WordPress automatically uses WP_PHPMailer when wp_mail() is called:
// In wp_mail() - wp-includes/pluggable.php
if ( ! ( $phpmailer instanceof PHPMailerPHPMailerPHPMailer ) ) {
require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php';
require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
require_once ABSPATH . WPINC . '/class-wp-phpmailer.php';
$phpmailer = new WP_PHPMailer( true );
$phpmailer::$validator = static function ( $email ) {
return (bool) is_email( $email );
};
}
Note: WordPress sets $exceptions = true and replaces PHPMailer’s email validator with WordPress’s is_email() function.
Inherited Properties
Key properties from PHPMailerPHPMailerPHPMailer:
| Property | Type | Default | Description |
|---|---|---|---|
$Mailer |
string | 'mail' |
Send method: mail, sendmail, smtp |
$Host |
string | 'localhost' |
SMTP host(s) |
$Port |
int | 25 |
SMTP port |
$SMTPAuth |
bool | false |
Enable SMTP authentication |
$Username |
string | '' |
SMTP username |
$Password |
string | '' |
SMTP password |
$SMTPSecure |
string | '' |
Encryption: ”, ‘tls’, ‘ssl’ |
$SMTPAutoTLS |
bool | true |
Auto-enable TLS if supported |
$From |
string | '' |
From email address |
$FromName |
string | '' |
From name |
$Subject |
string | '' |
Email subject |
$Body |
string | '' |
Email body (HTML or plain) |
$AltBody |
string | '' |
Plain-text alternative body |
$CharSet |
string | 'iso-8859-1' |
Character set |
$ContentType |
string | 'text/plain' |
MIME content type |
$Encoding |
string | '8bit' |
Message encoding |
$Timeout |
int | 300 |
SMTP timeout in seconds |
$SMTPDebug |
int | 0 |
Debug output level (0-4) |
Inherited Methods
| Method | Description |
|---|---|
send() |
Send the email |
isMail() |
Set mailer to use PHP mail() |
isSMTP() |
Set mailer to use SMTP |
isSendmail() |
Set mailer to use sendmail |
setFrom($address, $name) |
Set From address |
addAddress($address, $name) |
Add To recipient |
addCC($address, $name) |
Add CC recipient |
addBCC($address, $name) |
Add BCC recipient |
addReplyTo($address, $name) |
Add Reply-To address |
addAttachment($path, $name) |
Add file attachment |
addEmbeddedImage(...) |
Add inline embedded image |
addCustomHeader($header) |
Add custom header |
isHTML($isHtml) |
Set HTML mode |
clearAllRecipients() |
Clear all recipients |
clearAttachments() |
Clear attachments |
clearCustomHeaders() |
Clear custom headers |
clearReplyTos() |
Clear Reply-To addresses |
Constants
From PHPMailerPHPMailerPHPMailer:
// Character sets
const CHARSET_ASCII = 'us-ascii';
const CHARSET_ISO88591 = 'iso-8859-1';
const CHARSET_UTF8 = 'utf-8';
// Content types
const CONTENT_TYPE_PLAINTEXT = 'text/plain';
const CONTENT_TYPE_TEXT_HTML = 'text/html';
const CONTENT_TYPE_MULTIPART_ALTERNATIVE = 'multipart/alternative';
const CONTENT_TYPE_MULTIPART_MIXED = 'multipart/mixed';
const CONTENT_TYPE_MULTIPART_RELATED = 'multipart/related';
// Encodings
const ENCODING_7BIT = '7bit';
const ENCODING_8BIT = '8bit';
const ENCODING_BASE64 = 'base64';
const ENCODING_QUOTED_PRINTABLE = 'quoted-printable';
// Encryption
const ENCRYPTION_STARTTLS = 'tls';
const ENCRYPTION_SMTPS = 'ssl';