wp_mail() is a wrapper for PHPMailer which is a wrapper for PHP’s mail().

bool wp_mail( 
    string $to, 
    string $subject, 
    string $message, 
    [string|array $headers = ''
    [, string|array $attachments = array() ]

A header must follow the form Name:Content, eg.: Bcc:hello@example.com. Multiple headers might be separated by \n or passed as an array.

An attachment is a path in the local file system. See PHPMailer::AddAttachment() for details.

In contrast to the raw mail() function, the WordPress wrapper is a function: it can be replaced by plugins. This is useful in when the installation needs specific configuration. But this means also wp_mail() is not available before plugins_loaded has been called.

PHPMailer is a class delivered by WordPress but developed outside. It handles many edge cases.

Always use wp_mail(), never mail().

history | show excerpt | excerpt history