En este ejemplo vamos a enviar desde localhost un mail con un archivo adjunto usando la librería PHPMailer con SMTP con tu cuenta de gmail para el envío. Este turorial lo hice cuando recién empezaba a programar y no contaba con un dominio, esto quiere decir que la función mail() nativa de php no funciona en localhost.
Comencemos haciendo un formulario con 4 campos como el siguiente: (no hagan caso a los colores, no soy diseñador xD)
El código de la imagen es:
<!DOCTYPE html> <html> <head> <title>huguidugui.wordpress.com</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="css/bootstrap.css"> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script> </head> <body> <div class="wrap"> <header> Enviar mail desde localhost con PHP Mailer </header> <section id="principal"> <form id="formulario" method="post" action="php/enviar.php" enctype="multipart/form-data"> <div class="campos"> <label>Para:</label> <input type="email" name="email" required> </div> <div class="campos"> <label>Asunto:</label> <input type="text" name="asunto"> </div> <div class="campos"> <label>Mensaje:</label> <textarea name="mensaje"></textarea> </div> <label>Imagen:</label> <input type="file" name="hugo" id="imagen" /> <input id="submit" type="submit" name="enviar" value="Enviar mail"> </form> </section> </div> </body> </html>
Como vemos en el action del formulario, lo dirige a enviar.php, este se encargará de tomar los campo con POST ('para', 'asunto' y 'mensaje'), FILES para obtener el archivo cargado y finalmente hacer el envío del mail con phpmailer, aquí el código:
<?php //Librerías para el envío de mail include_once('class.phpmailer.php'); include_once('class.smtp.php'); //Recibir todos los parámetros del formulario $para = $_POST['email']; $asunto = $_POST['asunto']; $mensaje = $_POST['mensaje']; $archivo = $_FILES['hugo']; //Este bloque es importante $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Host = "smtp.gmail.com"; $mail->Port = 465; //Nuestra cuenta $mail->Username ='ponerTuCuentaDeMail@gmail.com'; $mail->Password = '*******'; //Su password //Agregar destinatario $mail->AddAddress($para); $mail->Subject = $asunto; $mail->Body = $mensaje; //Para adjuntar archivo $mail->AddAttachment($archivo['tmp_name'], $archivo['name']); $mail->MsgHTML($mensaje); //Avisar si fue enviado o no y dirigir al index if($mail->Send()) { echo'<script type="text/javascript"> alert("Enviado Correctamente"); window.location="https://localhost/maillocal/index.php" </script>'; } else{ echo'<script type="text/javascript"> alert("NO ENVIADO, intentar de nuevo"); window.location="https://localhost/maillocal/index.php" </script>'; } ?>
Listo, espero que te sea de ayuda. Si quieres puedes escribirme a ringhugos@gmail.com o al whatsapp para cualquier comentario o duda que tengas sobre este tutorial. Recuerda que puedes bajar el ejemplo completo en el siguiente enlace: Ejemplo completo de phpmailer para enviar mail desde localhost
Muchas gracias por leer el blog :D