Aprende a generar dinero desde casa

Distintas formas de enviar emails con PHP

Distintas formas de enviar emails con PHP
El envío de emails es una de las funciones principales de cualquier sistema en internet, ya sea un sitio de usuarios, carros de compras, facturación, membresías etc.

Podemos enviar emails utilizando PHP de dos formas principalmente. Utilizando el servidor donde se ejecuta nuestro sitio, o bien utilizando un servidor externo SMTP.

Envió de emails utilizando la función mail()

La función “mail()” de php nos permite enviar emails tal como lo hacemos con nuestra aplicación de escritorio o web, como puede ser Outlook, Hotmail, Gmail y otras. 

La sintaxis básica de a función es la siguiente:
mail($para, $asunto, $mensaje, $header);
Destinatario: es el primer parámetro de la función y debe ser una dirección de correo electrónico. Puedes especificar más de uno separados por comas, ejemplo: email@dominio.com, email2@dominio.com, email2@dominio.com

Asunto, segundo parámetro.

Mensaje: tercer parámetro, es en si lo que leerá el destinatario de tu email, puede ser texto plano o bien texto enriquecido HTML.

Header, este es un parámetro importante, es necesario que este parámetro este bien configurado, muchas veces, de no estarlo nuestros emails serán filtradas y enviados directamente a la bandeja de spam de nuestros usuarios.

Teniendo estos conceptos claro, podemos realizar nuestra prueba utilizando el siguiente código:
$nombre = $_POST['nombre'];
$empresa = $_POST['empresa'];
$envia_desde_nombre = “”;
$envia_desde_email= “”;
$mensaje_tipo= “text/html”; //o puedes usar text/plain
 
$header ="MIME-Version: 1.0\n"; 
$header .= "Content-type: ".$mensaje_tipo."; charset=iso-8859-1\n";  
$header .= "From: ".$envia_desde_nombre." <".$envia_desde_email.">\n"; 
$header .= "Organization: “.$empresa.” \n";
$header .=" X-Mailer: PHP/". phpversion()."\n"; 
 
$mensaje = "Este mensaje fue enviado por " . $nombre . ", de la empresa " . $empresa . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());
 
$para = 'info@tusitio.com';
$asunto = 'Contacto desde Tu sitio web';
mail($para, $asunto, $mensaje, $header);

Envió de email con HTML usando PHP. 

El procedimiento es básicamente el mismo. Solo tenemos que tener en cuenta que el tipo este configurado como “text/html”.
$mensaje = "<h1>Probando con html</h1>
<p>esta es una prueba de texto con html</p>";
Incluso podemos enviar una página completa HTML, con los tags de body, header etc. Esto ayuda a que tus emails se visualicen correctamente en la bandeja de entrada del que recibe el email.
$mensaje = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
 
<body>
<h1>Probando con html</h1>
<p>esta es una prueba de texto con html</p>
</body>
</html>';

 Envió de Email Usando un Servidor SMTP con PHP.

Utilizaremos la librería “phpmailer” la cual la podemos bajar de sourceforge.net . Esta librería para el envio de correos electrónicos utilizando SMTP con php ha sido probada y es muy conocida en la comunidad de programadores. 

Podemos enviar emails ajustando algunos parámetros, como por ejemplo, servidor de salida, puerto, usuario, contraseña etc. 

En nuestra PHP de ejemplo agregamos lo siguiente:
include("phpmailer/class.phpmailer.php");
 
$mail = new phpmailer();
//Definimos las propiedades y llamamos a los métodos 
//correspondientes del objeto mail
 
 
//este ejemplo va a estar en el subdirectorio includes
$mail->PluginDir = "/phpmailer/";
 
//Con la propiedad Mailer le indicamos que vamos a usar un 
//servidor smtp
$mail->Mailer = "smtp";
 
//Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = "ssl://smtp.gmail.com";
$mail->Port =465;
 
//Le indicamos que el servidor smtp requiere autenticación
$mail->SMTPAuth = true;
$mail->IsHTML(true); 
 
//Le decimos cual es nuestro nombre de usuario y password
$mail->Username =  "usuario smtp" ; 
$mail->Password = "contraseña";
 
//Indicamos cual es nuestra dirección de correo y el nombre que 
//queremos que vea el usuario que lee nuestro correo
$mail->From = "email que ve el usuario";
$mail->FromName = "Nombre de envio";
 
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar 
//una cuenta gratuita, por tanto lo pongo a 30  
$mail->Timeout=30;
 
//Indicamos cual es la dirección de destino del correo
$email_to_sent = "email donde va dirigido el email";
$mail->AddAddress("$email_to_sent");
 
//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo 
//que se vea en negrita
$mail->Subject = "texto subject aqui";
$mail->Body = "aca asignamos el texto, el mensaje que ve la persona a la que enviamos el email";
 
//Definimos AltBody por si el destinatario del correo no admite email con formato html 
$mail->AltBody = "";
 
//se envia el mensaje, si no ha habido problemas 
//la variable $exito tendra el valor true
$exito = $mail->Send();
 
$intentos=1; 
while ((!$exito) && ($intentos < 5)) 
{
  sleep(5);
   //echo $mail->ErrorInfo;
   $exito = $mail->Send();
   $intentos=$intentos+1; 
 
}
 
 
 if(!$exito)
 {
  echo "Problema enviando email ".$valor;
  echo "<br/>".$mail->ErrorInfo; 
 }
 else
 {
  echo "Email enviado!";
 }
Espero que este tutorial de como enviar emails con PHP haya sido útil. 

Publicar un comentario