Enviar un correo utilizando PHPMailer en CodeIgniter

Utilizar la clase Email es la manera más sencilla de enviar un correo a través de una aplicación desarrollada en CodeIgniter. No estamos hablando solo de enviar correo de texto/html si no que también puedes enviar correos vía servidor SMTP utilizando dicha librería. Esta clase Email pertenece a una librería del sistema y viene dentro del framework CodeIgniter. Es por eso que la puedes utilizar en CodeIgniter sin necesidad de instalar ninguna librería adicional. De manera alternativa, la librería PHPMailer es una solución estupenda para enviar correos sin necesidad de utilizar la librería Email.

La librería PHPMailer es la que más se suele utilizar en aplicaciones PHP para estos menesteres. En este tutorial, te mostrareos a integrar la librería PHPMailer en una aplicación desarrollada con CodeIgniter 3.

Integrar PHPMailer en CodeIgniter

Lo primero que tienes que hacer es descargarte la última versión de PHPMailer y colocar sus ficheros dentro de la carpeta application/third_party/ de tu aplicación.

Application/
>>third_party/
>>>>PHPMailer/
>>>>>>Exception.php
>>>>>>Oauth.php
>>>>>>PHPMailer.php
>>>>>>POP3.php
>>>>>>SMTP.php

Ahora, crearemos una librería (application/libraries/Phpmailer_lib.php) para gestionar el objeto PHPMailer.

  • Incluye los ficheros de la librería PHPMailer
  • Inicializa la clase PHPMailer
  • Devuelve el objeto PHPMailer
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * CodeIgniter PHPMailer Class
 *
 * This class enables SMTP email with PHPMailer
 *
 * @category    Libraries
 * @author      CodexWorld
 * @link        https://www.codexworld.com
 */

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
class PHPMailer_Lib
{
    public function __construct(){
        log_message('Debug', 'PHPMailer class is loaded.');
    }

    public function load(){
        // Include PHPMailer library files
        require_once APPPATH.'third_party/PHPMailer/Exception.php';
        require_once APPPATH.'third_party/PHPMailer/PHPMailer.php';
        require_once APPPATH.'third_party/PHPMailer/SMTP.php';
        
        $mail = new PHPMailer;
        return $mail;
    }
}

Enviar un correo utilizando PHPMailer

Utilizando la librería PHPMailer_Lib podrás enviar un correo con PHPMailer en tu aplicación CodeIgniter. El siguiente ejemplo muestra cómo hacerlo, pero antes pasemos a ver la estrategia:

Cargamos la librería PHPMailer_Lib Llamamos a la función load() de PHPMailer_Lib Definimos el host ($mail->Host), el username ($mail->Username), el password ($mail->Password) y el port ($mail->Port) así como las credenciales SMTP. Definimos el isHTML() a TRUE para enviar el correo con formato HTML.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Email extends CI_Controller{
    
    function  __construct(){
        parent::__construct();
    }
    
    function send(){
        // Load PHPMailer library
        $this->load->library('phpmailer_lib');
        
        // PHPMailer object
        $mail = $this->phpmailer_lib->load();
        
        // SMTP configuration
        $mail->isSMTP();
        $mail->Host     = 'smtp.example.com';
        $mail->SMTPAuth = true;
        $mail->Username = '[email protected]';
        $mail->Password = '********';
        $mail->SMTPSecure = 'ssl';
        $mail->Port     = 465;
        
        $mail->setFrom('[email protected]', 'Programacion.net');
        $mail->addReplyTo('[email protected]', 'Programacion.net');
        
        // Add a recipient
        $mail->addAddress('[email protected]');
        
        // Add cc or bcc 
        $mail->addCC('[email protected]');
        $mail->addBCC('[email protected]');
        
        // Email subject
        $mail->Subject = 'Send Email via SMTP using PHPMailer in CodeIgniter';
        
        // Set email format to HTML
        $mail->isHTML(true);
        
        // Email body content
        $mailContent = "<h1>Send HTML Email using SMTP in CodeIgniter</h1>
            <p>This is a test email sending using SMTP mail server with PHPMailer.</p>";
        $mail->Body = $mailContent;
        
        // Send email
        if(!$mail->send()){
            echo 'Message could not be sent.';
            echo 'Mailer Error: ' . $mail->ErrorInfo;
        }else{
            echo 'Message has been sent';
        }
    }
    
}

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP