2012-06-12 108 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));