1

プログラムで drupal ユーザー アカウントを作成しています。コードは以下のとおりです。Drupalを除いて、標準のユーザー作成ルールに従って、主に電子メールを送信して電子メールアドレスを確認することを除いて、すべてが機能しているようです。したがって、ユーザーは Drupal で作成されますが、確認メールは送信されません。

電子メールは、インストールで正常に機能します。標準の登録フォームを使用すると、ユーザーは期待どおりに電子メールを受け取り、登録プロセスを完了することができます。

確認メールを送信するために user_save に知らせるために何をする必要があるかについてのヒントはありますか?

function _webform_submit($form, &$form_state) {
    $data = $form_state['values']['submitted_tree'];
    drupal_set_message('Data is: <pre>' . print_r($data, TRUE) . '</pre>'); 

    if (array_key_exists('create_user', $data)) {
        drupal_set_message('Found create_user.');
        $name = $data['email'];
        $account_id = db_query("SELECT uid FROM {users} WHERE name = :name", array(':name' => $name))->fetchField();

        $account = new stdClass();
        if ($account_id) {
            //$account->uid = $account_id;
            drupal_set_message("Found existing user");
        } 
        else {

            $pass = user_password();
            drupal_set_message("Creating a new user: " . $name . " with pw: " . $pass );
            $account->is_new = TRUE;
            $account->status = TRUE;

            foreach($data as $key => $value) {
                //If this is an array, likely checkboxes.
                if (gettype($value) == 'array') {
                foreach($value as $arr_key => $arr_val) {
                        $edit[$arr_val]['und'][0]['value'] = '1';
                    }
                }
                else {
                    $edit[$key]['und'][0]['value'] = $value;
                }
            }
            $edit['name'] = $name;
            //$edit['pass'] = $pass;
            $edit['mail'] = $name;
            $edit['status'] = 1;
            $edit['init'] = $name;

            user_save($account, $edit); 
        }

    }
}
4

1 に答える 1

3

答えが見つかりました - user_save は通知を処理しません。直接処理する必要があります。私が使用した:

_user_mail_notify('register_no_approval_required', user_save($account, $edit));
于 2012-06-12T15:40:11.760 に答える