Class EnviaMail: Construyendo una Simple Class para Enviar Emails!
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!
Para esto devo tener instalado previamente dendMail?
ResponderBorrarHola Edgar,
BorrarNo necesitas tener instalado SendMail ya que en el script se esta construyendo paso a paso todo. Es un script totalmente funcional.