web-dev-qa-db-ja.com

drupal_mail()で2つのメールを同時に送信する方法

注文をメールとクライアントのメールに送信したい。

次のコードを使用して、自分のWebサイトで注文を送信します。

_function MYMODULE_form_submit($form, &$form_state) {
  order_mail_send($form_state['values']);
}
_

これはorder_mail_send()コードです:

_function order_mail_send($form_values) {
  $module = 'shop';
  $key = 'key';
  $to = $form_values['email'];

  $language = language_default();
  $params = array();
  $from = NULL;
  $send = FALSE;
  $message = drupal_mail($module, $key, $to, $language, $params, $from, $send);
  $message2 = drupal_mail($module, $key, $from, $language, $params, $from, $send);

  $subject = 'Order Status';

  $message['subject'] = $subject;
  $message['body'] = array();

  $message['body'][] = "<h3>Your order: ".$form_values['first']." ".$form_values['last']."</h3>";

  // …

  // Retrieve the responsible implementation for this message.
  $system = drupal_mail_system($module, $key);


  // Format the message body.
  $message = $system->format($message);
  $message2 = $system->format($message2);

  // Send e-mail.
  $message['result'] = $system->mail($message);
  $message['result2'] = $system->mail($message2);


  if ($message['result'] && $message['result2'] == TRUE) {
    drupal_set_message(t('Your order has been sent. Thank you!'));
  }
  else {
    drupal_set_message(t('There was a problem sending your message and it was not sent.'), 'error');
  }
}
_
  1. 今度は最初のメール($message = $system->format($message);を送信しますが、2番目のメールは送信しません。どうすればそれを機能させることができますか?
  2. メールの送信後にカートの値を空にするにはどうすればよいですか?ブラウザを閉じるとカートが空になりますが、送信後にも削除したいです。
2

CCを使用して、コピーをadmin/yourselfに送信できます
$message['headers']['CC'] = "[email protected]"

4
GoodSp33d

drupal_mail() を呼び出すモジュールは drupal_mail_system() を呼び出さないため、コードは正しくありませんが、 hook_mail() を実装しています。このフック実装の例は contact_mail() で、Contactモジュールから送信された電子メールを contact_personal_form_submit() で処理します contact_site_form_submit()

  // contact_site_form_submit()
  $values = $form_state['values'];
  $values['sender'] = $user;
  $values['sender']->name = $values['name'];
  $values['sender']->mail = $values['mail'];
  $values['category'] = contact_load($values['cid']);

  // Save the anonymous user information to a cookie for reuse.
  if (!$user->uid) {
    user_cookie_save(array_intersect_key($values, array_flip(array('name', 'mail'))));
  }

  // Get the to and from e-mail addresses.
  $to = $values['category']['recipients'];
  $from = $values['sender']->mail;

  // Send the e-mail to the recipients using the site default language.
  drupal_mail('contact', 'page_mail', $to, language_default(), $values, $from);

  // If the user requests it, send a copy using the current language.
  if ($values['copy']) {
    drupal_mail('contact', 'page_copy', $from, $language, $values, $from);
  }

  // Send an auto-reply if necessary using the current language.
  if ($values['category']['reply']) {
    drupal_mail('contact', 'page_autoreply', $from, $language, $values, $to);
  }

Kantuからも述べたように、受信者ではない他のユーザーにCCでメールを送信できます。

2
kiamlaluno