function contact_mail

Implements hook_mail().

File

drupal/core/modules/contact/contact.module, line 259
Enables the use of personal and site-wide contact forms.

Code

function contact_mail($key, &$message, $params) {
  $contact_message = $params['contact_message'];
  $sender = $params['sender'];
  $language = language_load($message['langcode']);
  $variables = array(
    '!site-name' => config('system.site')
      ->get('name'),
    '!subject' => $contact_message->subject,
    '!category' => isset($params['contact_category']) ? $params['contact_category']
      ->label() : NULL,
    '!form-url' => url(current_path(), array(
      'absolute' => TRUE,
      'language' => $language,
    )),
    '!sender-name' => user_format_name($sender),
  );
  if (!empty($sender->uid)) {
    $sender_uri = $sender
      ->uri();
    $variables['!sender-url'] = url($sender_uri['path'], array(
      'absolute' => TRUE,
      'language' => $language,
    ) + $sender_uri['options']);
  }
  else {
    $variables['!sender-url'] = $params['sender']->mail;
  }
  $options = array(
    'langcode' => $language->langcode,
  );
  switch ($key) {
    case 'page_mail':
    case 'page_copy':
      $message['subject'] .= t('[!category] !subject', $variables, $options);
      $message['body'][] = t("!sender-name (!sender-url) sent a message using the contact form at !form-url.", $variables, $options);
      $build = entity_view($contact_message, 'mail', $language->langcode);
      $message['body'][] = drupal_render($build);
      break;
    case 'page_autoreply':
      $message['subject'] .= t('[!category] !subject', $variables, $options);
      $message['body'][] = $params['contact_category']->reply;
      break;
    case 'user_mail':
    case 'user_copy':
      $variables += array(
        '!recipient-name' => user_format_name($params['recipient']),
        '!recipient-edit-url' => url('user/' . $params['recipient']->uid . '/edit', array(
          'absolute' => TRUE,
          'language' => $language,
        )),
      );
      $message['subject'] .= t('[!site-name] !subject', $variables, $options);
      $message['body'][] = t('Hello !recipient-name,', $variables, $options);
      $message['body'][] = t("!sender-name (!sender-url) has sent you a message via your contact form at !site-name.", $variables, $options);
      $message['body'][] = t("If you don't want to receive such e-mails, you can change your settings at !recipient-edit-url.", $variables, $options);
      $message['body'][] = t('Message:', array(), $options);
      $message['body'][] = $contact_message->message;
      break;
  }
}