Estoy tratando de crear un usuario mediante código. Tengo el siguiente que crea el usuario. No obstante, no enviar un correo electrónico al usuario diciendo que la cuenta ha sido creada. ¿Cómo puedo hacer eso?

$newUser = array(
  'name' => 'username',
  'pass' => 'password', //note: do not md5 the password
  'mail' => 'email address',
  'status' => 1,
  'init' => 'email address'
);           
user_save(null, $newUser);
Intenta crear usuario manualmente, lo que Hace es enviar un E-mail?
Si hago clic en «Notificar al usuario de la cuenta nueva» recibo un correo electrónico.

OriginalEl autor Will | 2010-11-22

7 Comentarios

  1. -3

    Usted podría utilizar Reglas. Usted puede agregar una acción que se desencadena cuando el usuario se crea.

    Aceptado respuesta?? ¿Qué pasa si las reglas no está instalado.

    OriginalEl autor pasine

  2. 28

    Puede utilizar el estándar de _user_mail_notify() función del núcleo de Drupal «Usuario» del módulo.

       //Create user.
       $new_user = array(
          'name' => $username,
          'pass' => $password, 
          'mail' => $email,
          'status' => 1,
          'init' => $email,
          'roles' => array(DRUPAL_AUTHENTICATED_RID => TRUE),
        );  
       $account = user_save(NULL, $new_user);
       //Set operation.
       $op = 'register_no_approval_required';
       //Send an email.
       _user_mail_notify($op, $account);

    Hay diferentes valores de $op:

     /* @param $op
     *   The operation being performed on the account. Possible values:
     *   - 'register_admin_created': Welcome message for user created by the admin.
     *   - 'register_no_approval_required': Welcome message when user
     *     self-registers.
     *   - 'register_pending_approval': Welcome message, user pending admin
     *     approval.
     *   - 'password_reset': Password recovery request.
     *   - 'status_activated': Account activated.
     *   - 'status_blocked': Account blocked.
     *   - 'cancel_confirm': Account cancellation request.
     *   - 'status_canceled': Account canceled.*/
    No _user_mail_notify se invoca, mientras que el uso de user_save ?? en Drupal 7 a pesar de que

    OriginalEl autor milkovsky

  3. 1

    Si quieres imitar cómo núcleo de Drupal se encarga de esto, echa un vistazo a user_register_submit(). Que es la función que reacciona a la casilla de verificación que menciono más arriba, y si las notificaciones están deseado, pasa la guarda de objeto de usuario en _user_mail_notify(), que se encarga de enviar el mensaje.

    OriginalEl autor jhedstrom

  4. 0

    implementar hook_mail:

    function YOURMODULE_mail($key, &$message, $params) {
    
      drupal_set_message('email test');
    
      switch ($key) {
        case 'mymail':
          //Set headers etc
          $message['to'] = '[email protected]';
          $message['subject'] = t('Hello');
          $message['body'][] = t('Hello @username,', array('@username' => $params['username']));
          $message['body'][] = t('The main part of the message.');
          break;
    }
    }

    a continuación, utilice el drupal_mail() función:

    $result = drupal_mail('example', 'mymail','[email protected]', 'en', 'params','[email protected]', '[email protected]');

    OriginalEl autor Alejandro Moreno

  5. 0

    Las respuestas anteriores prácticamente todos hacen lo mismo, pero el salto a la cadena en diferentes puntos; algunas requieren módulos adicionales; y algunos en referencia a los formularios del sistema.

    Personalmente, mientras que el módulo Reglas puede llevar esto a cabo, parece un poco contradictorio para crear mediante programación un usuario, a continuación, utilizar la interfaz de usuario para enviar la notificación.

    Yo optaría por el uso de la _user_mail_notify() método y la superación de la operación que se desea (register_pending_approval, register_no_approval_required, etc.). Esto lo pone en la cadena lo suficientemente bajas como para que no depender de módulos adicionales, pero lo suficientemente alto para que te estás tocando en Drupal lógica de registro.

    OriginalEl autor bjunc

  6. 0

    La forma estándar puede cambiar su código un poco, como este cambio de user_save y agregar el resto);

    $account = user_save('', $newUser); //the first parameter is left blank so a new user is created
    
      //If you want to send the welcome email, use the following code
      //Manually set the password so it appears in the e-mail.
      $account->password = $newUser['pass'];
    
      //Send the e-mail through the user module.
      drupal_mail('user', 'register_no_approval_required',
        $email, NULL, array('account' => $account), variable_get('site_mail', '[email protected]'));

    OriginalEl autor Amir Razavi

Dejar respuesta

Please enter your comment!
Please enter your name here