martes, 1 de octubre de 2013

Enviar Email con phpmailer a través de una cuenta de gmail


Vídeo explicativo de como enviar emails con PHPMailer ...



A continuación veremos como enviar un email con la clase PHPMAILER a través del servidor SMTP de gmail, para ello es necesario tener una cuenta en gmail, en el siguiente script de ejemplo únicamente tendrás que poner tus datos de usuario, el resto está configurado para que funcione correctamente, cada parte de código viene comentada para que comprendas como usarlo, podrás enviar un email con formato html si quieres y adjuntarle un archivo.

Otro aspecto importante es que si te encuentras en localhost, para poder enviar emails vas a necesitar un servidor de correos local, en el caso de XAMPP o WAMPP  vienen con Mercury, para configurarlo puedes ver el siguiente vídeo ... Configurar Mercury para el envío de emails

Si no tienes PHPMAILER, lo puedes descargar directamente desde aquí, DESCARGAR PHPMAILER

<?php
$resultado = "";

if (isset($_POST["nombre"]))
{
$nombre = $_POST["nombre"];
$email = $_POST["email"];
$mensaje = $_POST["mensaje"];
$adjunto = $_FILES["adjunto"];

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

$mail = new PHPMailer();

$mail->IsSMTP(); // Llamamos a la clase SMTP
$mail->SMTPAuth = true; //Activar la autenticación SMTP
$mail->SMTPSecure = "tls"; //Establece el prefijo al servidor SMTP
$mail->Host = "smtp.gmail.com"; // poner GMAIL como el servidor SMTP
$mail->Port = 587; // poner el puerto SMTP de GMAIL
$mail->Username = "tuemail@gmail.com"; // email de usuario de GMAIL
$mail->Password = "tupassword"; // password de usuario de GMAIL

$mail->FromName = "Administrador"; //Nombre del remitente

$mail->Subject = "Buenos días"; //Asunto del email

$mail->AddAddress($email, $nombre); //Destinatario

$mail->MsgHTML($mensaje); //Mensaje en HTML

//Si el archivo es de tamaño mayor que 0
if ($adjunto["size"] > 0)
{
$mail->AddAttachment($adjunto["tmp_name"], $adjunto["name"]);//adjuntar un archivo al mensaje
}

if($mail->Send())
{
$resultado = "Enhorabuena el mensaje ha sido enviado con éxito a $email";
}

else
{
$resultado = "Lo siento ha habido un error al enviar el mensaje a $email";
}
}
?>
<h3>Enviar Email con phpmailer a través de una cuenta de gmail</h3>

<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data">
<table border="0">
<tr>
<td>Archivo:</td>
<td><input type="file" name="adjunto"></td>
</tr>
<tr>
<td>Nombre del destinatario:</td>
<td><input type="text" name="nombre"></td>
</tr>
<tr>
<td>Email a:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Mensaje:</td>
<td><textarea cols="50" rows="15" name="mensaje"></textarea></td>
<tr>
<tr>
<td></td><td><input type="submit" value="Enviar"></td>
</tr>
</table>
<b><?php echo $resultado; ?></b>
</form>