1 email_example.module email_example_mail_send($form_values)

Sends an e-mail.

Parameters

array $form_values: An array of values from the contact form fields that were submitted. There are just two relevant items: $form_values['email'] and $form_values['message'].

Related topics

File

modules/examples/email_example/email_example.module, line 75
Example of how to use Backdrop's mail API.

Code

function email_example_mail_send($form_values) {
  // All system mails need to specify the module and template key (mirrored from
  // hook_mail()) that the message they want to send comes from.
  $module = 'email_example';
  $key = 'contact_message';

  // Specify 'to' and 'from' addresses.
  $to = $form_values['email'];
  $from = config_get('system.core', 'site_mail');

  // "params" loads in additional context for email content completion in
  // hook_mail(). In this case, we want to pass in the values the user entered
  // into the form, which include the message body in $form_values['message'].
  $params = $form_values;

  // The language of the e-mail. This will one of three values:
  // - user_preferred_language(): Used for sending mail to a particular website
  //   user, so that the mail appears in their preferred language.
  // - global $language: Used when sending a mail back to the user currently
  //   viewing the site. This will send it in the language they're currently
  //   using.
  // - language_default(): Used when sending mail to a pre-existing, 'neutral'
  //   address, such as the system e-mail address, or when you're unsure of the
  //   language preferences of the intended recipient.
  //
  // Since in our case, we are sending a message to a random e-mail address that
  // is not necessarily tied to a user account, we will use the site's default
  // language.
  $language = language_default();

  // Whether or not to automatically send the mail when backdrop_mail() is
  // called. This defaults to TRUE, and is normally what you want unless you
  // need to do additional processing before backdrop_mail_send() is called.
  $send = TRUE;
  // Send the mail, and check for success. Note that this does not guarantee
  // message delivery; only that there were no PHP-related issues encountered
  // while sending.
  $result = backdrop_mail($module, $key, $to, $language, $params, $from, $send);
  if ($result['result'] == TRUE) {
    backdrop_set_message(t('Your message has been sent.'));
  }
  else {
    backdrop_set_message(t('There was a problem sending your message and it was not sent.'), 'error');
  }

}