1

連絡先モジュールを使用してメールボックスにメールを送信していますが、メール本文をカスタマイズするにはどうすればよいですか? デフォルトは次のとおりです。

the user name (http://example.com/user/3) use
http://example.com/contact ...

the message body

お問い合わせフォームにいくつかのフィールドを追加して使用hook_form_alterしました。例: 電話、住所、会社名、メールドレス、メール本文にそれらを表示する方法。ありがとうございました。

4

4 に答える 4

3

webform モジュールの使用を検討してください。フィールドを追加したり、どのフィールドをメールで送信するかを設定したりするためのフックを実装する必要はありません。

Drupal の contact モジュールの方がはるかに簡単です

于 2013-01-10T10:19:00.453 に答える
2

contact.moduleでわかるように、いくつかの定義済みのハードコードされた変数があります。独自のフィールドをフォームに追加した場合、それらはメールでは使用できません。

そこで利用できるようにするには、独自のメールハンドラーを作成、登録、および作成する必要があります。

hook_mail を実装する

function email_example_mail($key, &$message, $params) {
  global $user;

  $options = array(
    'langcode' => $message['language']->language,
  );

  switch ($key) {
    case 'contact_message':
      $message['subject'] = t('E-mail sent from @site-name', array('@site-name' => variable_get('site_name', 'Drupal')), $options);
      $message['body'][] = t('@name sent you the following message:', array('@name' => $user->name), $options);
      $message['body'][] = check_plain($params['message']);
      break;
  }
}

次に、メールを送信する方法:

function email_example_mail_send($form_values) {
  $module = 'email_example';
  $key = 'contact_message';

  $to = $form_values['email'];
  $from = variable_get('site_mail', 'admin@example.com');

  $params = $form_values;
  $language = language_default();
  $send = TRUE;
  $result = drupal_mail($module, $key, $to, $language, $params, $from, $send);
  if ($result['result'] == TRUE) {
    drupal_set_message(t('Your message has been sent.'));
  }
  else {
    drupal_set_message(t('There was a problem sending your message and it was not sent.'), 'error');
  }
}

このメソッドは、カスタム送信ハンドラー内から呼び出されます。

function email_example_contact_form_submit($form, &$form_state) {
  email_example_mail_send($form_state);
}

あなたが登録するものhook_form_alter(コアコンタクトフォームの正確な form_id がわからないので、それをどこに置くかcontact):

function email_example_contact_form_alter($form, &$form_state) {
  $form['#submit']['my_very_own_submit'] = array();
}

開発者向けの例から

于 2013-01-10T12:40:30.867 に答える
2

Muhammad は、 Webform モジュールを使用してフィールドを追加するという良い解決策を提案しています。そうすれば、コードを書く必要はありません。

特定のニーズに合わせて、電子メール メッセージを変更するのに役立つhook_mail_alterを使用でき、電子メール本文に追加のフィールドを追加できます。

于 2013-01-10T11:02:12.367 に答える