我使用联系人模块向我的邮箱发送电子邮件,如何自定义电子邮件正文?默认为:
the user name (http://example.com/user/3) use
http://example.com/contact ...
the message body
我已经hook_form_alter
在联系我们表单中添加了一些字段。例如:电话、地址、公司名称。电子邮件地址,如何使它们显示在电子邮件正文中。谢谢你。
我使用联系人模块向我的邮箱发送电子邮件,如何自定义电子邮件正文?默认为:
the user name (http://example.com/user/3) use
http://example.com/contact ...
the message body
我已经hook_form_alter
在联系我们表单中添加了一些字段。例如:电话、地址、公司名称。电子邮件地址,如何使它们显示在电子邮件正文中。谢谢你。
考虑使用webform 模块。您无需实现任何挂钩来添加字段或配置要通过电子邮件发送的字段。
Drupal 的联系模块要容易得多
Muhammad 提出了一个很好的解决方案,我们应该使用Webform 模块来添加字段。这样你就不需要写任何代码了。
对于您的特定需要,您可以使用hook_mail_alter来帮助您更改电子邮件消息,并且您可以在电子邮件正文中添加额外的字段。
Entityforms模块使用标准的 Drupal 字段,这意味着您可以使用任何标准的 Drupal 字段。对于那些使用过 Webforms 的人,这个模块将 Webform 的功能带入了“标准”Drupal 字段/实体世界。
虽然 Webform 是一个拥有大量追随者的优秀模块,但它并没有与标准的 Drupal 字段或实体感知模块集成。所以对于 Drupal 7 站点,推荐使用 Entityforms 模块!
与 Webform 一样,它与表单提交通知的规则模块很好地集成,并允许复杂的通知逻辑。
正如您在contact.module中看到的,有一些预定义的硬编码变量。如果您将自己的字段添加到表单中,则它们不适用于邮件。
为了使它们在那里可用,您需要编写、注册和编写自己的邮件处理程序;
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();
}