Attention Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Plugin API/Action Reference/phpmailer init


The wp_mail function relies on the PHPMailer class to send email through PHP's mail function. The phpmailer_init action hook allows you to hook to the phpmailer object and pass in your own arguments.


(array) (required) The PHPMailer instance, passed by reference.
Default: array()


This is an example of establishing an SMTP connection using the `phpmailer_init` action:

add_action( 'phpmailer_init', 'my_phpmailer_example' );
function my_phpmailer_example( $phpmailer ) {
    $phpmailer->Host = 'smtp.example.com';
    $phpmailer->SMTPAuth = true; // Force it to use Username and Password to authenticate
    $phpmailer->Port = 25;
    $phpmailer->Username = 'yourusername';
    $phpmailer->Password = 'yourpassword';

    // Additional settings…
    //$phpmailer->SMTPSecure = "tls"; // Choose SSL or TLS, if necessary for your server
    //$phpmailer->From = "you@yourdomail.com";
    //$phpmailer->FromName = "Your Name";


This action is initiated with `do_action_ref_array` rather than `do_action`. You still hook to it with `do_action`. However, there are some notable differences:

  • If you pass an array to `do_action_ref_array()`, each element's value of that array is passed as a separate parameter to the callback.
  • If you pass an array to `do_action()`, the complete array is passed as a single argument including any keys.

Change Log

Since: Version 2.2

Source File

phpmailer_init is located in wp-includes/pluggable.php