semilla que encuentres siembra

Creación automática de emails para cPanel con PHP

Nov 13 2006 | 02:59 PHP, cPanel

Mientras cambiaba el sitio de uno de mis clientes a mi nuevo servidor me vi en la necesidad de crear decenas de emails a través de cPanel. Esta es una tarea tediosa y muy tardada porque crear un solo email en el cPanel implica insertar y enviar los datos, esperar el mensaje de confirmación de cPanel, regresar al formulario y continuar.
La forma fácil de hacerlo todo rápidamente es con un script que se autentique y envíe los datos a cPanel para cada uno de los emails en una sola transacción.

Intenté haciendo peticiones XMLHTTP con JavaScript (AJAX) pero no funcionó, así que probé con PHP y fopen() basándome en un script que usé hace mucho tiempo (no tengo la URL ni recuerdo el nombre).

PHP:
  1. <?php
  2. // Configuración del script //
  3. // emails a crear
  4. $mails = array( 'dominio.com, usuario, password123, 10',
  5.                 'dominio.com, ventas, password4355, 3',
  6.                 'otro.com.mx, contacto, clave98999, 5');
  7.                
  8. $cpanel['user'] = 'skippy78'; // Usuario cPanel
  9. $cpanel['pass'] = 'dest567p'; // Password cPanel
  10. $cpanel['domain'] = 'dominio.com'; // Dominio o IP cPanel
  11. $cpanel['skin'] = 'x'// Skin de cPanel, normalmente x o rvblue
  12. // fin configuración //
  13. function create_email($edomain, $euser, $epass, $equota){
  14.     global $cpanel;
  15.     $f = fopen('http://'.$cpanel['user'].':'.$cpanel['pass'].'@'.
  16.                 $cpanel['domain'].':2082/frontend/'.
  17.                 $cpanel['skin'].'/mail/doaddpop.html?email='.
  18.                 $euser.'&domain='.$edomain.'&password='.$epass.
  19.                 '&quota='.$equota, 'r');
  20.     if(!$f){
  21.         echo 'No se pudo crear el email (falló fopen).<br>';
  22.         return false;
  23.     }   
  24.     while (!feof($f)){
  25.         $line = fgets($f, 1024);
  26.         if(ereg('already exists!', $line, $out)){
  27.             echo 'El email ya existe<br>';
  28.             return false;
  29.         }
  30.     }
  31.     fclose($f);
  32.     return true;
  33. }
  34. // Se recorre el array de información de emails y se ejecuta la función.
  35. foreach($mails as $mail){
  36.     $mail_info = explode(',', $mail);
  37.     if(create_email($mail_info[0], $mail_info[1], $mail_info[2], $mail_info[3])){
  38.         echo $mail_info[1].'@'.$mail_info[0].
  39.              ' (password: '.$mail_info[2].', cuota:'.$mail_info[3].') creado.<br>';
  40.     }   
  41. }
  42. ?>

Puedes descargar el archivo si así lo deseas (clic derecho, 'guardar enlace como').

Espero que esto ayude a alguien :)

3 comentarios

  1. Alonso dice:

    Excelente, no conociá tu sitio, muy bueno

    Saludos !!

    3 Enero 2007 @ 12:39

  2. Ernesto dice:

    Gracias! Espero verte sequido por aquí ;)

    3 Enero 2007 @ 17:01

  3. jose dice:

    excelente articulo, justo lo que necesitaba, gracias!

    15 Marzo 2008 @ 17:34

Suscripción RSS a los comentarios de la entrada. URI para TrackBack.

Deje un comentario