PHP OO En Practica: Class EnviaMail: Una Class útil para Empezar!

Compartir:

Class EnviaMail: Construyendo una Simple Class para Enviar Emails!

Download ClassEnviaMail

Primer Paso: En Primer lugar necesitaremos crear una carpeta llamada "Controladores" que es donde alojaremos nuestro archivo 'EnviaMail.class.php' que contendrá a nuestra 'class EnviaMail':

Archivo Controladores/EnviaMail.class.php


<?php
/**
* Author: MiSCapu
* Class EnviaMail
*
*/

/**
* @namespace MiSCapu: Creo un namespace para evitar posibles conflictos de nombres de métodos, variables o constantes;
* que podrían ocurrir en el script.
*/

namespace MiSCapu;

/***
* @class EnviaMail: Class que permite el envío de un Mail
*/

class EnviaMail
{
/**
* @var string $remitente: contiene los datos del remitente del mail.
* @var string $destino: contiene los datos del destino del mail.
* @var string $asunto: contiene los datos del asunto del mail.
* @var string $cuerpo: contiene los datos del cuerpo del mail.
*/

private $remitente;
private $destinos;
private $asuntos;
private $cuerpos;
/**
* @method __construct: es apropiado aquí este método mágico que nos brinda PHP ya que
* realizaremos un inicio del objeto $emailer instanciando a la class EnviaMail y
* necesitamos preparar este objeto para que sea enviado con sus (campos remitente,
* destino, asunto y cuerpo que estan alojados en las variables private antes informadas)
* @param string $elRemitente: este parámetro incluye los datos del remitente.
*/

function __construct($elRemitente)
{
/**
* Accedemos a la variable private $remitente con la pseudovariable '$this' que está
* disponible para cuando un método o una variable va a ser invocada.
*/

$this->remitente = $elRemitente;
/**
* Accedemos a la variable private $destino con la pseudovariable '$this'.
*/

$this->destinos = array();
}

public function agregaDestino($elDestino)
{
/**
* @function array_push: Esta función Adiciona al array el valor de las variables
* que se puedan pasar; esta adición del contenido de las variables estará al final
* del array (ejemplo:
* $nombres = 1-miguel, 2-juan
* array_push($nombres, "Carlos") ===> el resultado en pantalla será:
* 1-miguel
* 2-juan
* 3-Carlos
*/

array_push($this->destinos, $elDestino);
}/** @noinspection PhpInconsistentReturnPointsInspection */

/**
* @return mixed
*
* @method setAsunto: setando al atributo Asunto que es private y lo setamos; lo cual hace
* que este atributo sea solo accesado travez de un método de la class EnviaMail que en este
* caso sería setAsunto. Osea este método lo que hace es poner a disposición al atributo
* asunto que tenga el mail
*
* @param string $elAsunto: es el parámetro que contiene el asunto de nuestro e-mail
*
* @var string $asuntos: atributo private declarado al principio del código al que e
* accesa en esta función
*/

public function setAsunto($elAsunto){
$this->asuntos = $elAsunto;
}

/**
* @method setCuerpo: setando el atributo cuerpos a travéz del método setCuerpo.
* @param string $elCuerpo: que almacena los valores que pueda tener la variable private $cuerpos.
*/

public function setCuerpo($elCuerpo){
$this->cuerpos = $elCuerpo;
}
/**
* @method enviaMail: método que accesa mediante la pseudovariable $this al atributo
* private destino, luego mediante el constructor foreach (solo actua con arrays y objetos)
* recorremos el array dado por $this->destinos y en cada iteración le asigna un valor
* al parámetro $eldestino luego mediante:
* @var string $resultado: inicia el envio de un email para el e-mail que cumpla
* con los datos ingresados. Luego muestra un mensaje que dice que el mensaje se ha
* enviado de manera satisfactoria para $elDestino
*/

public function enviaMail(){
foreach ($this->destinos as $elDestino){
$result = mail($elDestino, $this->asuntos, $this->cuerpos, "From: {$this->remitente}\r\n");
if ($result) echo "Su e-mail se ha conseguido enviar satisfactoriamente para {$elDestino}<br />";
}
}
}
  • En este script hemos creado la class 'EnviaMail' que como vemos contiene 4 atributos privates y 3 métodos de acceso a estos.
  • Finalmente hay un método que realiza el envío de E-mails a los destinatarios.
  • Todo bien, pero como lo utilizamos?
  • En el siguiente archivo veremos eso!
    Segundo Paso: Como segundo paso creamos en nuestra carpeta principal el archivo index.php que realizará el requerimiento require del archivo anteriormente creado 'EnviaMail.class.php', para poder acceder a la class en este contenida EnviaMail.
    • Este código hace el instanciamiento de la class EnviaMail y pasa $elremitente del E-mail a través del método __construct.
    • Luego usa el método 'agregaDestino' para agregar $eldestino del e-mail,
    • Usa el método setAsunto para pasar por él, $elAsunto del E-mail.
    • Usa por último el método setCuerpo para agregar $elCuerpo del mensaje; osea el contenido del mensaje que queremos enviar a través del e-mail.

    Archivo index.php


    <?php
    /**
    * Author: MiSCapu
    * Date: 21/04/2017
    * Time: 23:31
    */

    /**
    * Accedemos al archivo EnviaMail que contiene la classe del mismo nombre.
    */

    require 'Controladores/EnviaMail.php';
    /**
    * Utilizo el namespace MiSCapu y la class EnviaMail
    */

    use MiSCapu\EnviaMail as EnviaMail;
    /**
    * Creamos el objeto $emailer que instancia a la class EnviaMail para
    * realizar el proceso de envío de un e-mail
    */

    /**
    * Iniciamos el objeto
    */

    $emailer = new EnviaMail('miguelonsinho5@gmail.com'); //método __construct
    /**
    * Utilizamos el objeto $emailer con el método agregaDestino
    */

    $emailer->agregaDestino('mignan2010@hotmail.com'); //accesando métodos
    /**
    * Utilizamos el objeto $emailer con el método SetAsunto
    */

    $emailer->setAsunto('Sólo un Teste');
    /**
    * Utilizamos el objeto $emailer con el método setCuerpo
    */

    $emailer->setCuerpo('Hola MiSCapu, como esta todo ahí?');
    $emailer->enviaMail();
    • Si hemos codificado de manera correcta todos estos archivos e integrado nuestros datos de acceso a MySQL; 
    • Al accesar nuestro archivo index.php; obtendremos en nuestro navegador el siguiente panorama:
    Bueno con esto culminamos un artículo donde explico paso a paso la creación de una simple Class llamada EnviaMail que como su nombre lo aclara; realiza el envío de un Email; todo esto utilizando el paradigma de Orientación de Objetos del Lenguaje PHP!
    Compartir:
    Localización Gov. Celso Ramos, SC, Brasil

    Aplicativo PHP

    PDO

    PHP

    PHP y MySQL

    SystemRegPHP

    Déjenos su Comentário:

    2 comments:

    1. Para esto devo tener instalado previamente dendMail?

      ResponderExcluir
      Respostas
      1. Hola Edgar,
        No necesitas tener instalado SendMail ya que en el script se esta construyendo paso a paso todo. Es un script totalmente funcional.

        Excluir