RSS

Enviar mail desde local con PHPMailer

04 Ago

En este pequeño ejemplo podemos ver lo fácil que es enviar un mail con un archivo adjunto desde localhost usando tu cuenta de gmail para el envío.

Para tal motivo usaremos la librería PHP Mailer y un formulario usando los nuevos tags y atributos de HTML5 para hacer la validación de los campos.

Empecemos…  😀

Si quieres toda la estructura de directorios con las dos librerías de PHPMailer, CSS y archivos para el responsive, puedes bajar directamente desde mi dropbox el directorio completo (solo salta la publicidad).

<!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>

Agregando los estilos, se ve como en la siguiente imagen:

PHPMailer_index

index.php para envío de mail con archivo adjunto

Como vemos este código no es tan complicado, solo es un formulario básico. Si tienes alguna duda del formulario, coméntalo por favor 🙂

Ahora vamos con el archivo que se encarga de este formulario, que como vemos, es un archivo que está en la carpeta php y se llama enviar.php.

Noten lo sencillo que es este archivo,  no requiere una gran explicación, solo con los comentarios del código es suficiente.

<?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="http://localhost/maillocal/index.php"
		 </script>';
}
else{
	echo'<script type="text/javascript">
			alert("NO ENVIADO, intentar de nuevo");
			window.location="http://localhost/maillocal/index.php"
		 </script>';
}
?>

Explicado con palabras:

  1. Agregamos las dos librerías para hacer funcionar el smtp y crear un objeto
  2. Recibimos todos los campos del formulario por POST
  3. Se configura el smtp, en este caso el de gmail y es smtp.gmail.com
  4. Ponemos los datos de nuestra cuenta de gmail. Información que podemos poner en un archivo de configuración (recomendado)
  5. Usamos los métodos para adjuntar archivo, cuerpo, mensaje y destinatario
  6. Se envía y cual fuere el caso, se avisa al usuario y se dirige al index

Espero que sirva de ayuda este pequeño post que me salvó más de una vez en mis mini-proyectos a nivel localhost.

ringhugos@gmail.com || @huguidugui

Anuncios
 
14 comentarios

Publicado por en 4 agosto, 2014 en HTML, CSS, JQUERY, PHP

 

Etiquetas: , , , ,

14 Respuestas a “Enviar mail desde local con PHPMailer

  1. Peterson tutoriales (Peterson Flemm)

    12 agosto, 2014 at 12:57

    Gracias, excelente código.

     
    • huguidugui

      21 agosto, 2014 at 19:58

      Acaso tú eres el buen samaritano que me avisó del desliz que tuve en los archivos de descarga???

       
  2. emmanuel santillan

    20 noviembre, 2014 at 10:29

    excelente codigo

     
  3. Joisamar

    15 diciembre, 2014 at 15:23

    gracias, buen codigo me sirvio de guia 😀

     
  4. rafael sandoval

    23 mayo, 2015 at 07:41

    exelente trabajo es una programacion bien limpia clara y funcional

     
  5. Nery Orlando del Valle Soto

    24 junio, 2015 at 13:00

    Gracias amigo el codigo me fue muy util!

     
    • huguidugui

      25 junio, 2015 at 05:45

      Muchas gracias a ti también por leer el blog, me alegra que te haya servido.
      Saludos (Y)

       
  6. zacuna

    8 julio, 2015 at 14:30

    De verdad mil gracias dure mucho tiempo buscando esta solución .. dios le bendiga

     
  7. Omer

    9 agosto, 2015 at 21:11

    sos grande viejo mil gracias por este post , eres un orgullo para la nación

     
    • huguidugui

      10 agosto, 2015 at 06:01

      Hey, gracias pero no es para tanto 😀

      Me alegro que te haya servido, saludos.

       
  8. huellajuvenil

    27 agosto, 2015 at 11:43

    man consulta, si tengo un registro de formulario donde deja sus comentarios con sus datos pero necesito que ese registro le llegue a un correo como usaria el phpmailer

     
  9. Raul Aranda

    18 noviembre, 2015 at 16:51

    Gracias por el aporte. Es posible realizar el envio desde otra cuente que no sea gmail ya sea hotmail o cualquier otro correo??

     
    • huguidugui

      6 diciembre, 2015 at 18:32

      Hola Raúl, yo creo que sí pero no he visto información sobre usar otro correo. Si logras hacerlo me agradaría bastante que me dijeras cómo lo hiciste.

      ringhugos@gmail.com

      Saludos

       

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

 
A %d blogueros les gusta esto: