comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

ClassMailer enviar mails con funcion mail, sin mucha complejidad

  • 1 Respuestas
  • 1154 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alexander1712

  • *
  • Underc0der
  • Mensajes: 850
  • Actividad:
    0%
  • Reputación -2
    • Ver Perfil
    • El blog del programador
    • Email
« en: Octubre 09, 2013, 09:30:41 pm »
Hola, siguiendo mi proyecto de tener una serie de modulos que incluya y pueda usar en cualquier proyecto para no tener que estar escribiendo código una y otra vez, y en base a que hace poco un usuario del foro se le complicaba enviar emails, realizé esta siemple pero efectiva clase que envía emails creando las cabeceras y todas esas cosas que no deberíamos tener por que escribirlas.

consta de dos archivos y requiere mi Property Trait (pueden verlo You are not allowed to view links. Register or Login)

El primer archivo es el archivo "ClassMailerInterface.php" (que debe estar junto al otro)

Código: PHP
  1. <?php
  2.  
  3. interface IClassMailer
  4. {
  5.        
  6.         // devuelve verdadero si $email es válido, o falso si $email no es válido
  7.         public function validar_email($email);
  8.        
  9.         // enviar email preconfigurado
  10.         public function send();
  11.         // retorna verdadero o falso dependiendo de si se envió el email
  12.        
  13.         // setters and getters
  14.         public function get_receptor();
  15.         public function set_receptor($value);
  16.        
  17.         public function get_receptor_alias();
  18.         public function set_receptor_alias($value);
  19.        
  20.         public function get_emisor();
  21.         public function set_emisor($value);
  22.        
  23.         public function get_emisor_alias();
  24.         public function set_emisor_alias($value);
  25.        
  26.         public function get_asunto();
  27.         public function set_asunto($value);
  28.        
  29.         public function get_charset();
  30.         public function set_charset($value);
  31.        
  32.         public function get_content_type();
  33.         public function set_content_type($value);
  34.        
  35.         public function get_mime_version();
  36.         public function set_mime_version($value);
  37.        
  38.         public function get_mensaje();
  39.         public function set_mensaje($value);
  40.        
  41.         public function get_error();
  42.         public function set_error($value);
  43.        
  44.         public function get_error_message();
  45.         public function set_error_message($value);
  46.        
  47. }
  48.  
  49. include('ClassMailer.php');

ese archivo de ahí arriba deben incluir para poder usar el sistema de emails, pero recuerden que primero hay que incluir el archivo que tenga el property que puse más arriba.

El segundo archivo es el ClassMailer.php
Código: PHP
  1. <?php
  2.  
  3. Class ClassMailer implements IClassMailer
  4. {      
  5.         // uses
  6.         use Property;
  7.        
  8.         // atributes
  9.         private $receptor = null;
  10.         private $receptor_alias = null;
  11.         private $emisor = null;
  12.         private $emisor_alias = null;
  13.         private $asunto = null;
  14.         private $charset = 'UTF-8';
  15.         private $content_type = 'text/html';
  16.         protected $mime_version = '1.0';
  17.         private $mensaje = null;
  18.        
  19.         protected $error = false;
  20.         protected $error_message = null;
  21.        
  22.         public function __construct($emisor, $receptor, $asunto, $mensaje, $emisor_alias = null, $receptor_alias = null)
  23.         {
  24.                 try
  25.                 {
  26.                         if(!$this->validar_email($emisor)) Throw new exception('Invalid mail $emisor');
  27.                         if(!$this->validar_email($receptor)) Throw new exception('Invalid mail $receptor');
  28.                         $asunto = You are not allowed to view links. Register or Login($asunto);
  29.                         if(You are not allowed to view links. Register or Login($asunto) && You are not allowed to view links. Register or Login($asunto)<3) throw new exception('Invalid subject $asunto');
  30.                         $mensaje = You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login($mensaje));
  31.                         if(You are not allowed to view links. Register or Login($mensaje) && You are not allowed to view links. Register or Login($mensaje)<10) throw new exception('Invalid menssage $mensaje');
  32.                         $this->receptor = $receptor;
  33.                         $this->emisor = $emisor;
  34.                         $this->asunto = $asunto;
  35.                         $this->mensaje = $mensaje;
  36.                         if(!You are not allowed to view links. Register or Login($emisor_alias))
  37.                         {
  38.                                 $emisor_alias = You are not allowed to view links. Register or Login($emisor_alias);
  39.                                 if(You are not allowed to view links. Register or Login($emisor_alias)>3)
  40.                                         $this->emisor_alias = $emisor_alias;
  41.                                 else
  42.                                         throw new exception('Emisor Alias is invalid');
  43.                         }
  44.                         if(!You are not allowed to view links. Register or Login($receptor_alias))
  45.                         {
  46.                                 $emisor_alias = You are not allowed to view links. Register or Login($receptor_alias);
  47.                                 if(You are not allowed to view links. Register or Login($receptor_alias)>3)
  48.                                         $this->receptor_alias = $receptor_alias;
  49.                                 else
  50.                                         throw new exception('Receptor Alias is invalid');
  51.                         }
  52.                 } catch (Exception $e) { $this->error = true; $this->error_message = $e->getMessage(); }
  53.         }
  54.        
  55.         public function validar_email($email)
  56.         {
  57.                 return You are not allowed to view links. Register or Login('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i',$email);
  58.         }
  59.        
  60.         public function send()
  61.         {
  62.                 if(!$this->error)
  63.                 {
  64.                         You are not allowed to view links. Register or Login($this->receptor, $this->asunto, $this->mensaje, $this->fabricar_cabeceras());
  65.                 } else { return false; }       
  66.         }
  67.        
  68.         private function fabricar_cabeceras()
  69.         {
  70.                 $cabeceras = null;
  71.                 $cabeceras  = 'MIME-Version: ' . $this->mime_version . "\r\n";
  72.                 $cabeceras .= 'Content-type: ' . $this->content_type . '; charset=' . $this->charset . "\r\n";
  73.                 if(!You are not allowed to view links. Register or Login($this->receptor_alias))
  74.                 {
  75.                         $cabeceras .= 'To: ' . $this->receptor_alias . ' <' . $this->receptor . '>' . "\r\n";
  76.                 } else {
  77.                         $cabeceras .= 'To: ' . $this->receptor . "\r\n";
  78.                 }
  79.                 if(!You are not allowed to view links. Register or Login($this->emisor_alias))
  80.                 {
  81.                         $cabeceras .= 'From: ' . $this->emisor_alias . ' <' . $this->emisor . '>' . "\r\n";
  82.                 } else {
  83.                         $cabeceras .= 'From: ' . $this->emisor . "\r\n";
  84.                 }
  85.                 return $cabeceras;
  86.         }
  87.        
  88.         public function get_receptor() { return $this->receptor; }
  89.         public function set_receptor($value)
  90.         {
  91.                 try
  92.                 {
  93.                         $receptor = $value;
  94.                         if(!$this->validar_email($receptor)) Throw new exception('Invalid mail $receptor');
  95.                         $this->receptor = $receptor;
  96.                 } catch (Exception $e) { $this->error = true; $this->error_message = $e->getMessage(); }
  97.         }
  98.        
  99.         public function get_receptor_alias() { return $this->receptor_alias;}
  100.         public function set_receptor_alias($value)
  101.         {
  102.                 try
  103.                 {
  104.                         $receptor_alias = $value;
  105.                         $receptor_alias = You are not allowed to view links. Register or Login($receptor_alias);
  106.                         if(!You are not allowed to view links. Register or Login($receptor_alias)>3) throw new exception('Receptor Alias is invalid');
  107.                         $this->receptor_alias = $receptor_alias;
  108.                 } catch (Exception $e) { $this->error = true; $this->error_message = $e->getMessage(); }
  109.         }
  110.        
  111.         public function get_emisor() { return $this->emisor; }
  112.         public function set_emisor($value)
  113.         {
  114.                 try
  115.                 {
  116.                         $emisor = $value;
  117.                         if(!$this->validar_email($emisor)) Throw new exception('Invalid mail $emisor');
  118.                         $this->emisor = $emisor;
  119.                 } catch (Exception $e) { $this->error = true; $this->error_message = $e->getMessage(); }
  120.         }
  121.        
  122.         public function get_emisor_alias() { return $this->emisor_alias; }
  123.         public function set_emisor_alias($value)
  124.         {
  125.                 try
  126.                 {
  127.                         $emisor_alias = $value;
  128.                         $emisor_alias = You are not allowed to view links. Register or Login($emisor_alias);
  129.                         if(!You are not allowed to view links. Register or Login($emisor_alias)>3) throw new exception('Emisor Alias is invalid');
  130.                         $this->emisor_alias = $emisor_alias;   
  131.                 } catch (Exception $e) { $this->error = true; $this->error_message = $e->getMessage(); }
  132.         }
  133.        
  134.         public function get_asunto() { return $this->asunto; }
  135.         public function set_asunto($value)
  136.         {
  137.                 try
  138.                 {
  139.                         $asunto = value;
  140.                         $asunto = You are not allowed to view links. Register or Login($asunto);
  141.                         if(You are not allowed to view links. Register or Login($asunto) && You are not allowed to view links. Register or Login($asunto)<3) throw new exception('Invalid subject $asunto');
  142.                 } catch (Exception $e) { $this->error = true; $this->error_message = $e->getMessage(); }
  143.         }
  144.        
  145.         public function get_charset() { return $this->charset; }
  146.         public function set_charset($value)
  147.         {
  148.                 $this->charset = $value;
  149.         }
  150.        
  151.         public function get_content_type() { return $this->content_type; }
  152.         public function set_content_type($value)
  153.         {
  154.                 $this->content_type = $value;
  155.         }
  156.        
  157.         public function get_mime_version() { return $this->mime_version; }
  158.         public function set_mime_version($value) { ; } // no podemos cambiar el mime_version
  159.        
  160.         public function get_mensaje() { return $this->mensaje; }
  161.         public function set_mensaje($value)
  162.         {
  163.                 try
  164.                 {
  165.                         $mensaje = $value;
  166.                         $mensaje = You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login($mensaje));
  167.                         if(You are not allowed to view links. Register or Login($mensaje) && You are not allowed to view links. Register or Login($mensaje)<10) throw new exception('Invalid menssage $mensaje');
  168.                         $this->mensaje = $mensaje;
  169.                 } catch (Exception $e) { $this->error = true; $this->error_message = $e->getMessage(); }
  170.         }
  171.        
  172.         public function get_error() { return $this->error; }
  173.         public function set_error($value) { ; } // no permitimos setear un error
  174.        
  175.         public function get_error_message() { return $this->error_message; }
  176.         public function set_error_message($value) { ; } // no permitimos setear un mensaje de error
  177.        
  178. }
  179.  

bueno, en una respuesta en este mismo post mostraré un ejemplo de su uso :) porque tanto código en mi post no entra y queda cortado.

saludos para todos!

Desconectado alexander1712

  • *
  • Underc0der
  • Mensajes: 850
  • Actividad:
    0%
  • Reputación -2
    • Ver Perfil
    • El blog del programador
    • Email
« Respuesta #1 en: Octubre 09, 2013, 09:36:53 pm »
Ejemplo de uso:

Código: PHP
  1.  
  2. // INCLUIMOS LOS ARCHIVOS NECESARIOS
  3. include('Property.php');
  4. include('ClassMailerInterface.php');
  5.  
  6. $emisor = 'ejemplo@hotmail.com'; // mi mail
  7. $emisor_alias = 'Roberto Gomez';
  8.  
  9. $receptor = 'prueba@hotmail.com'; // el mail de la persona que recibirá el mail xD
  10. $receptor_alias = 'José perez';
  11.  
  12. $asunto = 'Hola josé';
  13. $mensaje = 'Hola josé, como andas? todo bien? saludos!';
  14.  
  15. // creamos un nuevo mail
  16. $mail = new ClassMailer($emisor, $receptor, $asunto, $mensaje, $emisor_alias, $receptor_alias);
  17. // si no hay error
  18. if(!$mail->error)
  19.  {
  20.     $mail->send(); // enviamos el mail
  21.  }
  22. else // si hay error
  23.  {
  24.     echo $mail->error_message; // mostramos el error
  25.  }
  26.  

La clase tiene control de mails, control de asuntos, convierte a UTF8 los mensajes y crea las cabeceras, en otras palabras solo hay que poner eso, y admite HTML.

hacen eso y ya está envia el mail a prueba@hotmail.com, los Alias no son necesarios se pueden quitar y no va a haber problema.

saludos!

 

¿Te gustó el post? COMPARTILO!



[PHP] Funcion ASCII a HTML [x venom xd]

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1071
Último mensaje Febrero 24, 2010, 11:29:31 am
por ANTRAX
Enviar correo a nuestro msn de los que visitan nuestra web

Iniciado por syskc0

Respuestas: 9
Vistas: 2056
Último mensaje Julio 15, 2010, 04:53:35 pm
por Xt3mP
Mail Parser v1.0 – Organiza tu lista de correos

Iniciado por Xt3mP

Respuestas: 2
Vistas: 1621
Último mensaje Julio 18, 2012, 06:39:31 pm
por Xt3mP