私は現在Drupal 8.2.4で作業しており、必要なエンドポイント用のRest Webサービスモジュールを使用してヘッドレスWebアプリケーションを構築しています。エンドポイント_/entity/user
_を使用してユーザーを作成しています。ただし、デフォルトのウェルカムメールがDrupalによってユーザーを作成するときに送信されません。
Drupalで「新しいアカウントをユーザーに通知する」がチェックされている状態で通常のようにユーザーを作成すると、メールが送信されるため、メールが適切に送信されるように設定しています。これを機能させるために欠けている簡単な方法はありますか?
また、_hook_ENTITY_TYPE_insert
_を使用して__user_mail_notify
_を使用して電子メールの送信をトリガーしようとしましたが、これも希望どおりに機能しません。私のコードは次のとおりです:
/** * Implements hook_ENTITY_TYPE_insert(). * When a new user is created, do things. */ function custom_rules_user_insert(Drupal\Core\Entity\EntityInterface $entity) { _user_mail_notify('register_no_approval_required', $entity); }
私は何か間違ったことをしていますか?これを機能させる簡単な方法はありますか、これがまだ機能しないのですかDrupal 8?パスリセットメールをセットアップする必要があるので、任意のフィードバックをいただければ幸いです。
私はこれをテストしましたが、__user_mail_notify
_は現在8.2.4では機能していないようですが、hook_ENTITY_TYPE_insert()
を使用して回避策を見つけましたが、_hook_mail
_およびMailManager
も。
_/**
* Implements hook_mail().
*/
function custom_rules_mail($key, &$message, $params) {
$options = array(
'langcode' => $message['langcode'],
);
switch ($key) {
case 'create_user':
$message['from'] = \Drupal::config('system.site')->get('mail');
$message['subject'] = t('Welcome to the site!', $options);
$message['body'][] = $params['message'];
break;
}
}
/**
* Implements hook_ENTITY_TYPE_insert().
* When a new user is created, do things.
*/
function custom_rules_user_insert(Drupal\Core\Entity\EntityInterface $entity)
{
global $user;
// _user_mail_notify('register_no_approval_required', $entity);
$mailManager = \Drupal::service('plugin.manager.mail');
$module = 'custom_rules';
$key = 'create_user';
$to = $entity->getEmail();
$params['message'] = "Welcome to our site! \r\nYour username is " . $entity->getUsername() . " " . "\r\nIf you would like to reset your password, you can at the following link: \r\n" . user_pass_reset_url($entity);
$langcode = $entity->getPreferredLangcode();
$send = true;
$result = $mailManager->mail($module, $key, $to, $langcode, $params, NULL, $send);
if ($result['result'] !== true) {
drupal_set_message(t('There was a problem sending your message and it was not sent.'), 'error');
}
else {
drupal_set_message(t('Your message has been sent.'));
}
}
_
私がこれを設定した方法は機能します。ユーザーが作成されると(drupal GUIまたはREST API)を介して)、ウェルカムメールが送信されます。ウェルカムメールには、パスワードをリセットするためのリンクも含まれています。これは、定義されている_user_pass_reset_url
_関数を使用します here 。 MailManager は、使用と理解が非常に簡単でした。
私は this ブログをフォローして、これを行う方法を理解しました。