Enviar correo con PHP (PHPMailer)

Buenas hace unos días se me presentó la situación en la que tenía que enviar correos electrónicos cuando se rellenaba un formulario de contacto, al principio pense que iba ser sencillo de implementarlo sin embargo no fue así ya que tuve que investigar durante varias horas el por qué no me quería funcionar.

Con PHP podemos enviar correos electrónicos, tiempo atrás se utilizaba la función “mail” pero esto produjo que algunos sitios la utilizaran para hacer spam, una alternativa que vamos a evaluar es la clase PHPMailer la cual nos ayuda a enviar estos correos de una manera sencilla.

¿ Qué necesito ?

  • Descargar la clase acá.
  • Un servidor SMTP (nos permitira enviar los correos, si no lo tienes instalado en tú máquina local instalalo o bien adquiere algún plan de hosting que te ofrezca este servicio).

Una vez que se tiene esto debemos de configurar el archivo phpmailer.php lo abrimos y buscamos la línea (en la versión de la clase que utilizo es la número 205) que coincida con “public $SMTPAuth = false;” en lugar de “false” debemos de cambiarlo a true lo que queda “public $SMTPAuth = true;” una vez que hacemos esto salvamos los cambios.

Ahora es momento de codificar:

<?php
// incluimos la clase
require("includes/class.phpmailer.php");</code>

// creamos un objeto
$mail = new PHPMailer();

// establecemos la información de contacto
$Nombre = "TuEmpresa";
$CorreoDEnvio = "correodepepito@dominio.com";
$Mensaje = "Hola";
$Asunto = "Consulta";

// desde donde enviamos el correo
$mail->From = "infocorreo@tuempresa.com";
// nombre del remitente en este caso el de la empresa
$mail->FromName = $Nombre;

// dirección del correo electrónico que recibirá el correo
$mail->AddAddress("correodestino@dominio.com");

// limitamos el número de letras
$mail->WordWrap = 50;

// establecemos el asunto del correo
$mail->Subject  =  $Asunto;

// establecemos el cuerpo del mensaje
$mail->Body     =  $Mensaje;

// para que se envíe en formato HTML
$mail->IsHTML(true);

// Datos del servidor SMTP
$mail->IsSMTP();

// Servidor de Salida de los mensajes
$mail->Host = "www.tudominio.com";

// establecemos la autenticación
$mail->SMTPAuth = true;

// acá va el correo del cuál envían desde el servidor
$mail->Username = "infocorreo@miempresa.com";
$mail->Password = "TuClaveCorreo";

// verificamos si se envía el mensaje
if ($mail->Send())
echo "<script>alert('Mensaje Enviado');location.href ='javascript:history.back()';</script>";
else
echo "<script>alert('Error al enviar');location.href ='javascript:history.back()';</script>";

?>

Código en GitHub

Si probamos este código y configuramos todo como se debe podemos enviar correos a gmail, yahoo, cuentas de office 365 , entre otros. Pero por qué no llegan a Hotmail ??? Bueno resulta que en Hotmail debemos de configurar los remitentes para esto ingresamos a nuestra cuenta de hotmail , nos dirigimos hacia donde esta el engrane en la barra superior seguidamente en opciones.

0

Buscamos la opción que dice "Remitentes seguros y bloqueados" le damos click ahí.

1Presionamos donde dice "Remitentes seguros"

2y cuando abra agregamos el correo que usamos para enviar la información por ejemplo "infocorreo@tuempresa.com".

3

Con esto finalizamos esta entrada espero que les sea de ayuda!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s