miércoles, 24 de octubre de 2012

Enviar emails con Codeigniter y Gmail

Sigo aprendiendo como funciona Codeigniter y hoy una de las cosas que he aprendido y me ha gustado es la simplicidad para mandar correos electrónicos.

Una de las limitaciones que tenía hasta ahora cuando probaba en local es que no podía mandar correos por no tener ningún servidor montado. Seguramente haya otras posibilidades, pero tampoco me había molestado en aprender.

Hoy, con codeigniter, he conseguido mandar emails desde mi propio ordenador a través de mi cuenta de gmail, en tan solo unos minutos:


  1. Para empezar, hay que crear un archivo de configuración llamado "email.php" (tiene que llamarse así exactamente) y que esté situado dentro de la carpeta de configuración.
    En este archivo colocaremos las propiedades del servidor de correo que serán algo así:

    <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    $config['protocol'] = 'smtp';
    $config['smtp_host'] = 'ssl://smtp.googlemail.com';
    $config['smtp_port'] = 465;
    $config['smtp_user'] = 'youremail@gmail.com';
    $config['smtp_pass'] = 'yourpassword';
    $config['smtp_timeout'] = '7';
    $config['charset']    = 'utf-8';
    $config['newline']    = "\r\n";
    $config['mailtype'] = 'text'; // or html
    $config['validation'] = TRUE; // bool whether to validate email or not

  2. Segundo, tenemos que cargar la librería en el lugar donde queramos enviar el email:

    $this->load->library('email','','correo');

  3. Y por último preparar el email para enviar

    $this->correo->from('noreply@yourdomain.com', 'Your Name');
      $this->correo->to('toemail@gmail.com');
      $this->correo->subject('This is an email test');
      $this->correo->message('This is the body of the message');
    if($this->correo->send())
      {
       echo 'Correo enviado';
      }
    
      else
      {
       show_error($this->correo->print_debugger());
      }

  4. Y eso es todo! Correo enviado