2012-06-12 4 views
1

나는 프로그래밍 방식으로 drupal 사용자 계정을 만들고 있는데 코드는 아래에 있습니다. 모든 것은 표준 사용자 생성 규칙에 따라 Drupal을 제외하고는 주로 전자 메일 주소를 확인하기위한 전자 메일을 보내는 것으로 작동합니다. 따라서 사용자는 드루팔 (Drupal)에서 생성되지만 확인 이메일은 절대로 전송되지 않습니다.Drupal 7 user_save가 등록 이메일을 보내지 않음

이메일은 설치시 잘 작동합니다. 표준 등록 양식을 사용하면 사용자가 전자 메일을 예상대로 가져 와서 등록 프로세스를 완료 할 수 있습니다.

확인 이메일을 보내려면 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); 
     } 

    } 
} 

답변

3

발견 된 답변 - user_save는 알림을 처리하지 않으므로 직접 처리해야합니다. 나는 다음을 사용했다 :

_user_mail_notify('register_no_approval_required', user_save($account, $edit)); 
관련 문제