$mail->send() method

Send an email

  • Note that the order of arguments is slightly different from PHP's mail() function.
  • If no arguments are specified it simply returns a WireMail object (see #5 in examples).
  • This function will attempt to use an installed module that extends WireMail. If no module is installed, WireMail (which uses PHP mail) will be used instead.

Example

// 1. Default usage:
$mail->send($to, $from, $subject, $body);

// 2. Default usage with options array:
$mail->send($to, $from, $subject, $body, $options);

// 3. Specify body and/or bodyHTML in $options array (perhaps with other options):
$mail->send($to, $from, $subject, $options);

// 4. Specify both $body and $bodyHTML as arguments, but no $options:
$mail->send($to, $from, $subject, $body, $bodyHTML);

// 5. Specify a blank call to wireMail() to get the WireMail sending module:
$wireMail = $mail->send();

Usage

// basic usage
$int = $mail->send();

// usage with all arguments
$int = $mail->send($to = '', string $from = '', string $subject = '', $body = '', $options = []);

Arguments

NameType(s)Description
to (optional)string, array

Email address TO. For multiple, specify CSV string or array.

from (optional)string

Email address FROM. This may be an email address, or a combined name and email address. Example of combined name and email: `Karen Cramer <karen

subject (optional)string

Email subject

body (optional)string, array

Email body or omit to move straight to $options

options (optional)array, string

Array of options OR the $bodyHTML string. Array $options are:

  • body (string): Email body (text)
  • bodyHTML (string): Email body (HTML)
  • replyTo (string): Reply-to email address
  • headers (array): Associative array of header name => header value
  • Any additional options will be sent along to the WireMail module or class, in tact.

Return value

int WireMail

Returns number of messages sent or WireMail object if no arguments specified.


$mail methods and properties

API reference based on ProcessWire core version 3.0.155

Twitter updates

  • This post covers a few of the bigger updates in ProcessWire 3.0.154+3.0.155. This includes new live replacement of text in core and modules, a new method for creating canonical URLs, and some major upgrades to our input->urlSegment() method! More
    24 April 2020
  • A brief look at what's new in ProcessWire 3.0.154 in this forum post: More
    17 April 2020
  • This week we’ve got a few new and interesting core updates in progress, though none quite ready to release just yet. So rather than releasing version 3.0.154 today, I thought we'd instead take a brief look at what’s coming over the next few weeks… More
    3 April 2020

Latest news

  • ProcessWire Weekly #310
    The 310th issue of ProcessWire Weekly is going to be short and sweet: in this issue we'll walk you through the latest core updates, introduce a third party module called Twack, and check out a really gorgeous new site of the week. Read on!
    Weekly.pw / 18 April 2020
  • ProcessWire 3.0.154 and 3.0.155 core updates
    This post covers a few of the bigger updates in ProcessWire 3.0.154 and 3.0.155 on the dev branch. This includes a new function for live replacement of text in core and modules, a new method for creating canonical URLs, and some major upgrades to our $input->urlSegment() method that I think you’ll like!
    Blog / 24 April 2020
  • Subscribe to weekly ProcessWire news

“To Drupal, or to ProcessWire? The million dollar choice. We decided to make an early switch to PW. And in retrospect, ProcessWire was probably the best decision we made. Thanks are due to ProcessWire and the amazing system and set of modules that are in place.” —Unni Krishnan, Founder of PigtailPundits