web-dev-qa-db-ja.com

受信者のユーザー名を含むメールをユーザーに送信する

連絡先の設定(Drupalコア)、単純なニュース、および大量の連絡先モジュールを検索しましたが、受信者のユーザー名をメール本文に含める方法が見つかりませんでした。

これを行う方法の提案はありますか?

2
jjei

そのための設定はありませんが、ユーザーが別のユーザーのアカウントの連絡先フォームを使用して別のユーザーにメールを送信すると、Contactモジュールは次で始まるメッセージを送信します(Drupal.orgから自分にメールを送信しました):

キアムラルノ、

kiamlaluno(http://drupal.org/user/55077)がdrupal.orgの連絡フォーム(http://drupal.org/user/55077/contact)からメッセージを送信しました。

そのような電子メールを受け取りたくない場合は、 http://drupal.org/user/55077 で設定を変更できます。

最初の行には、受信者のユーザー名が含まれています。

次のスニペットは、Drupalから送信されたメッセージの一部を変更する関数 contact_mail() に含まれるコードの一部です。

case 'user_mail':
case 'user_copy':
  $user = $params['user'];
  $account = $params['account'];
  $message['subject'] .= '[' . variable_get('site_name', 'Drupal') . '] ' . $params['subject'];
  $message['body'][] = "$account->name,";
  $message['body'][] = t("!name (!name-url) has sent you a message via your contact form (!form-url) at !site.", array('!name' => $user->name, '!name-url' => url("user/$user->uid", array('absolute' => TRUE, 'language' => $language)), '!form-url' => url($_GET['q'], array('absolute' => TRUE, 'language' => $language)), '!site' => variable_get('site_name', 'Drupal')), $language->language);
  $message['body'][] = t("If you don't want to receive such e-mails, you can change your settings at !url.", array('!url' => url("user/$account->uid", array('absolute' => TRUE, 'language' => $language))), $language->language);
  $message['body'][] = t('Message:', NULL, $language->language);
  $message['body'][] = $params['message'];
  break;

他のモジュールが hook_mail_alter() を実装している場合、送信された電子メールのコンテンツを変更できます。これは、他のモジュールが連絡フォームを介して送信された電子メールからコンテンツを削除できることを意味します。また、別のモジュールが、最初の行で使用されているユーザー名を、受信者がユーザープロファイルで提供した姓名で置き換えることもできます。

2
kiamlaluno