Cómo enviar un correo electrónico usando CodeIgniter

El correo electrónico es muy importante en las aplicaciones web. Cuando un usuario se registra, es posible que deseemos enviarle un correo electrónico para verificar su dirección de correo electrónico y permitir que el usuario confirme una suscripción. También utilizamos el correo electrónico para restablecer contraseñas olvidadas, enviar facturas y recibos a los clientes, etc. CodeIgniter nos facilita el envío de correos electrónicos desde nuestra aplicación utilizando varias opciones.

CodeIgniter tiene una biblioteca de correo electrónico incorporada con la que podemos trabajar al enviar correos electrónicos.

En este tutorial, aprenderá

Configuración de correo electrónico de CodeIgniter

Necesitamos tener un lugar central donde podamos administrar la configuración del correo electrónico. CodeIgniter no viene con un archivo de configuración para correos electrónicos, por lo que tendremos que crear uno nosotros mismos.

Cree un archivo email.php en el directorio de aplicación / configuración

Agregue el siguiente código a email.php

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

$config = array(
    'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp'
    'smtp_host' => 'smtp.example.com', 
    'smtp_port' => 465,
    'smtp_user' => This email address is being protected from spambots. You need JavaScript enabled to view it.',
    'smtp_pass' => '12345!',
    'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example
    'mailtype' => 'text', //plaintext 'text' mails or 'html'
    'smtp_timeout' => '4', //in seconds
    'charset' => 'iso-8859-1',
    'wordwrap' => TRUE
);

AQUÍ,

  • ‘protocol’ => ‘smtp’, especifica el protocolo que desea utilizar al enviar correo. Esto podría estar en la configuración de smtp de Gmail o en la configuración de smtp de su host
  • ‘smtp_host’ => ‘smtp.example.com’, especifica el host smtp. Por ejemplo, si desea utilizar Gmail, tendrá algo como smtp.gmail.com
  • ‘smtp_port’ => 465, puerto abierto en el host smtp especificado configurado para correo smtp
  • ‘smtp_user’ => Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.‘, la dirección de correo electrónico que se utilizará como remitente al enviar correos electrónicos. Debe ser una dirección de correo electrónico válida en el servidor.
  • ‘smtp_pass’ => ‘12345!’, la contraseña para el correo electrónico del usuario smtp especificado
  • ‘smtp_crypto’ => ‘ssl’, especifica el método de cifrado que se utilizará, es decir, ssl, tls, etc.
  • ‘email type’ => ‘text’ establece el tipo de correo electrónico que se utilizará. Esto puede ser en texto sin formato o HTML según sus necesidades.
  • , ‘smtp_timeout’ => ‘4’, especifica el tiempo en segundos que debe descartarse al intentar conectarse al host antes de que se utilice una excepción de tiempo.
  • ‘charset’ => ‘iso-8859-1’, define el conjunto de caracteres que se utilizará al enviar correos electrónicos.
  • ‘wordwrap’ => TRUE se establece en TRUE, entonces el ajuste de palabras está habilitado. Si se establece en FALSE, el ajuste de palabras no está habilitado

Nota: para enviar correos electrónicos al trabajo, debe proporcionar parámetros de configuración válidos. Los parámetros ciegos no podrán enviar correos electrónicos.

Ver correo electrónico de CodeIgniter

En esta sección, crearemos la vista que el correo electrónico enviará al destinatario.

Cree un nuevo directorio de correo electrónico en la aplicación / comentarios

Cree una nueva aplicación contact.php application / views / email

Agregue el siguiente código a application / comments / email / contact.php

<!DOCTYPE html>
<html>
    <head>
        <title>CodeIgniter Send Email</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>
            <h3>Use the form below to send email</h3>
            <form method="post" action="<?=base_url('email')?>" enctype="multipart/form-data">
                <input type="email" id="to" name="to" placeholder="Receiver Email">
                <br><br>
                <input type="text" id="subject" name="subject" placeholder="Subject">
                <br><br>
                <textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea>
                <br><br>
                <input type="submit" value="Send Email" />
            </form>
        </div>
    </body>
</html>

AQUÍ,

  • Tenemos un formulario HTML básico que toma el correo electrónico, el contenido y el mensaje y traduce los parámetros a una ruta de correo electrónico.

Controlador de correo electrónico CodeIgniter

Ahora creamos el controlador que manejará el envío de correos electrónicos.

Cree un nuevo archivo EmailController.php en la aplicación / controllers / EmailController.php

Agregue el siguiente código a EmailController.php

<?php

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

class EmailController extends CI_Controller {

    public function __construct() {
        parent:: __construct();

        $this->load->helper('url');
    }

    public function index() {
        $this->load->view('email/contact');
    }

    function send() {
        $this->load->config('email');
        $this->load->library('email');
        
        $from = $this->config->item('smtp_user');
        $to = $this->input->post('to');
        $subject = $this->input->post('subject');
        $message = $this->input->post('message');

        $this->email->set_newline("rn");
        $this->email->from($from);
        $this->email->to($to);
        $this->email->subject($subject);
        $this->email->message($message);

        if ($this->email->send()) {
            echo 'Your Email has successfully been sent.';
        } else {
            show_error($this->email->print_debugger());
        }
    }
}

AQUÍ,

  • La clase EmailController que extiende CI_Controller {…} define nuestro controlador de correo electrónico que expande el controlador padre CodeIgniter.
  • La función pública __construct () {…} define el criador hijo que llama al generador de métodos padre.
  • índice de función pública () {…} define el método de índice mostrado por el formulario de contacto
  • enviar () función {…} define el método que envía el correo electrónico
    • $ this-> load-> config (‘correo electrónico’); carga los ajustes de configuración del correo electrónico
    • $ this-> load-> library (‘correo electrónico’); carga la biblioteca de correo electrónico
    • $ from = $ this-> config-> item (‘smtp_user’); La identificación del remitente se obtiene del archivo de configuración de correo electrónico que especificamos.
    • $ to = $ this-> input-> post (‘to’); El valor se deriva del formulario enviado
    • $ asunto = $ esto-> entrada-> publicación (‘asunto’); establece el correo electrónico enviado desde el formulario
    • $ mensaje = $ esto-> entrada-> publicación (‘mensaje’); establece el mensaje de correo electrónico del formulario
    • $ esto-> correo electrónico-> set_newline (» r n»); define los caracteres de la nueva línea para los correos electrónicos
    • $ this-> e-mail-> from ($ from); establece la dirección de correo electrónico del remitente
    • $ this-> email-> to ($ to); establece la dirección de correo electrónico del destinatario
    • $ esto-> correo electrónico-> asunto ($ asunto); establece el contenido del correo electrónico
    • $ this-> email-> message ($ mensaje); establece el mensaje de correo electrónico
    • if ($ this-> email-> send ()) {…} intenta enviar el correo electrónico. Si el correo electrónico se envió correctamente, el mensaje Su correo electrónico se envía a otra información. La información de depuración está impresa sobre lo que podría salir mal.

Definamos los canales de correo electrónico ahora

Maneras de correo electrónico

Agregue las siguientes rutas a la aplicación / config / route.php

$route['send-email'] = 'email controller';
$route['email'] = 'email controller/send';

Ahora podemos cargar el formulario de contactos en el navegador web.

Comencemos con el servidor PHP integrado.

Abra la terminal / línea de comando y busque la raíz de su aplicación. En mi caso, la raíz se encuentra en la unidad C: Sites ci-app

cd C:Sitesci-app

inicie el servidor usando el siguiente comando

php -S localhost:3000

Cargue la siguiente URL en su navegador web

http: // localhost: 3000 / enviar-correo electrónico

Debería poder ver el siguiente formulario

Ingrese el correo electrónico, el asunto y el mensaje de correo electrónico del destinatario y luego haga clic en Enviar correo electrónico. Si sus configuraciones de correo electrónico están configuradas correctamente, entonces debería poder ver el mensaje exitoso.

Resumen

La biblioteca de correo electrónico incorporada nos facilita el envío de correos electrónicos con un código mínimo. La biblioteca también es muy flexible, ya que puede configurarla para satisfacer sus necesidades.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Salir de la versión móvil