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!
Post A Comment:
0 comments: