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();
}
開発者向けの例から