Formulario de contacto con PHPMailer en vez de PHP mail()

Formulario de contacto con PHPMailer en vez de PHP mail()La función PHP mail() es utilizada comúnmente por formularios web del tipo “contáctenos“. Desafortunadamente ésta función, en la actualidad, se ha vuelto un riesgo potencial para los servidores.

Esta función presenta agujeros de seguridad graves que ayudan a los intrusos para acceder al sistema de archivos del usuario y desencadenar actividades maliciosas.

Ahora veamos en qué consiste esta vulnerabilidad. Supongamos que el formulario nos solicita nuestra dirección de correo, tendríamos un etiqueta input como la siguiente:
<input type="email" id="mail" name="email" />
Al pulsar el botón de enviar la información llegaría al servidor y la función mail() tomaría la dirección de correo para usarla como desde en el envío del email. Pero, ¿qué pasaría si en vez de una dirección de correo, le metieramos un script malicioso como el siguiente?
[email protected]%0ACc:[email protected]
La función mail() tomaría a [email protected] como el parámetro desde: (dirección del que nos envía el correo),  [email protected] como parámetro  Cc: (Direcciones que recibirán el email). %0A es simplemente el valor hexadecimal de un salto de línea.

Así de sencillo es para un spammer utilizar la función mail() para enviar emails a sus víctimas, por tanto, y como se ha comentado antes, es muy recomendable no utilizar esta función.

Para evitar que tu cuenta de hosting sea hackeada o vulnerada por intrusos indeseables, es importante discontinuar el uso de la función PHP mail() en tu cuenta lo antes posible.

PHPMailer con autenticación SMTP


En su lugar, es aconsejable utilizar la función PHPmailer con autenticación SMTP, lo que permite que el email no sea enviado en forma anónima desde el Formulario Web, sino más bien, que corresponda a un envío autorizado por la cuenta de hosting que lo utiliza.
PHPMailer es una biblioteca de códigos para enviar (transportar) correos electrónicos de forma segura y fácilmente a través del código PHP desde un servidor web.
El envío de correos electrónicos directamente por código PHP requiere una familiaridad de alto nivel con el protocolo estándar SMTP (RFC 821, RFC 2821 y RFC 5321) y problemas relacionados (como el retorno de carro ) y vulnerabilidades sobre la inyección de correo electrónico para envío de correo basura . Desde 2001, PHPMailer es una de las soluciones populares para estos asuntos en PHP. Ver en github...
Ahora bien, para poder utilizar ésta función, es necesario armar un archivo .php, para hacerlo, simplemente copia y pega el código “ejemplo” provisto más abajo en un archivo de tu editor de HTML favorito y guárdalo en formato .php, por ejemplo, envio.php

Tú solamente deberás reemplazar la información que corresponda al servicio SMTP del correo electrónico de tu cuenta de hosting.

Ahora recordemos que significa servicio SMTP: En términos humanos y comprensibles, el SMTP (Simple Mail Transfer Protocol, o protocolo simple de transferencia de correo) es un protocolo básico que permite que los emails viajen a través de Internet. Es decir, es un protocolo de mensajería empleado para mandar un email de un servidor de origen a un servidor de destino. Este procedimiento, indispensable en el proceso de envío de emails, es completado por el servidor SMTP.

Qué es el servidor SMTP: El servidor SMTP es un ordenador encargado de llevar a cabo el servicio SMTP, haciendo las veces de “cartero electrónico” y permitiendo el transporte de ese correo electrónico por Internet. La retransmisión SMTP funciona de un modo muy sencillo: si el servidor SMTP confirma las identidades del remitente y del destinatario, entonces el envío se realiza.

Digamos que es como la oficina de correos de la web: recoge el email del remitente y lo entrega en la oficina de correos local del destinatario, que es otro servidor SMTP. Nació en 1982 y sigue siendo el estándar de Internet más utilizado a día de hoy.

Código de ejemplo para hacer nuestro archivo de envio.php

<?php
require("class.phpmailer.php");
require("class.smtp.php");

$mail = new PHPMailer();

$mail->IsSMTP();  // set mailer to

$mail->Host = "mail.tu-nombre-de-dominio.com";  // specify main and backup server
$mail->SMTPAuth = true;  // turn on SMTP authentication
$mail->Username = "[email protected]";  // SMTP username
$mail->Password = "tu-contraseña"; // SMTP password

$mail->From = "[email protected]";
$mail->FromName = "remitente";  // remitente
$mail->AddAddress("[email protected]", "destinatario");  // destinatario

$mail->AddReplyTo("[email protected]", "respuesta a");  // responder a

$mail->WordWrap = 50;  // set word wrap to 50 characters
$mail->IsHTML(true);  // set email

$mail->Subject = "Asunto .....";
$mail->Body    = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";

if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message has been sent";
?> 
Puedes descargar un pequeño ejemplo donde solo deberás modificar el archivo enviar.php y luego publicarlo en tu sitio. Haz clic aquí para descargar el archivo.

  • Si quieres descargar la clásica biblioteca de envío de correo electrónico para PHP - PHPMailer
Si bien es un procedimiento sencillo, requiere algo de conocimiento en php, por lo tanto no te asustes si no logras hacerlo funcionar, recuerda que estamos para ayudarte, si necesitas ayuda no olvides dejar algún comentario, con gusto te ayudaremos.


<a onclick=Tutoriales En Linea" class='avatar avatar-64 photo' height='64' width='64'>
  • Autor:
  • Editor:
      Tutoriales En Linea
  • Fecha:2019-09-03
  • Categorias: Diseño Web html5 Html php WebSite webmasters Noticias Tutorial



Información
Usuarios que no esten registrados no pueden dejar comentarios, te invitamos a que te registre!