Curso de PHP

Estás en: Emails : Enviar con formulario con la clase PHPMailer

Enviar con formulario con la clase PHPMailer

En la página formulario.php se muestra un formulario con los siguientes datos:
- Nombre
- Email
- Comentarios
- Adjuntar fichero

En otra página (enviar_email.php), se recogen los datos por post.
Se configura el phpmailer con los datos recogidos del formulario.
Enviar mensaje con el fichero adjunto.

Ejemplo

Página formulario.php

<form action="enviar_email.php" method="post"  enctype="multipart/form-data" name="formulario">
   <label>Nombre</label><br />
   <input type="text" name="nombre" size="40" /><br />
	
   <label>Email</label><br />
   <input type="text" name="email" size="40" /><br />
	
   <label>Comentario</label><br />
   <textarea name="comentario" rows="5" cols="30"></textarea><br />

   <label>Selecciona un fichero</label><br />
   <input name="fichero" type="file" size="40" /><br />
   <br />
   <input name="enviar" type="submit" value="Enviar" /> <!--Si no se pone name no funciona, 
                                        porque el input para el fichero no lo reconoce como name -->
</form>

Página enviar_email.php

<?php
   
// ----------------------------- DATOS DE SMTP Y CUENTA DE ENVÍO -------------------------------

  // primero hay que incluir la clase phpmailer para poder instanciar
  //un objeto de la misma
  require ("includes/class.phpmailer.php");

  //instanciamos un objeto de la clase phpmailer al que llamamos 
  //por ejemplo mail
  $mail=new phpmailer();

  //Definimos las propiedades y llamamos a los métodos 
  //correspondientes del objeto mail

  //Con PluginDir le indicamos a la clase phpmailer donde se 
  //encuentra la clase smtp que como he comentado al principio de 
  //este ejemplo va a estar en el subdirectorio includes
  $mail->PluginDir = "includes/";

  //Con la propiedad Mailer le indicamos que vamos a usar un 
  //servidor smtp
  $mail->Mailer = "smtp";

  //Asignamos a Host el nombre de nuestro servidor smtp
  $mail->Host = "smtp.areafor.com";

  //Le indicamos que el servidor smtp requiere autenticación
  $mail->SMTPAuth = true;

  //Le decimos cual es nuestro nombre de usuario y password
  $mail->Username = "area0106@areafor.com"; 
  $mail->Password = "unouno";

  //Indicamos cual es nuestra dirección de correo y el nombre que 
  //queremos que vea el usuario que lee nuestro correo
  $mail->From = "area1006@areafor.com";
  $mail->FromName = "AREA 10";

  //el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar 
  //una cuenta gratuita, por tanto lo pongo a 30  
  $mail->Timeout=30;

// ----------------------------- DATOS DEL MENSAJE -------------------------------

  //Indicamos cual es la dirección de destino del correo
  $mail->AddAddress($_POST['email'], $_POST['nombre']);

  //Asignamos asunto y cuerpo del mensaje
  //El cuerpo del mensaje lo ponemos en formato html, haciendo 
  //que se vea en negrita
  $mail->Subject = "Prueba de PHPMailer";
  $mail->Body = $_POST['comentario'];

  //Definimos AltBody por si el destinatario del correo no admite email con formato html 
  $mail->AltBody = "Hola". $_POST['nombre'];
  
  //Decimos que el email va a ser tipo HTML
  $mail->IsHTML(true); 

 // ------------------------- DATOS DEL FICHERO ----------------------------------

  if ($_FILES['fichero']) {
		$mail->AddAttachment($_FILES['fichero']['tmp_name'], $_FILES['fichero']['name']);
   } 

  //se envia el mensaje, si no ha habido problemas 
  //la variable $exito tendra el valor true

  if ($mail->Send()) {
  	echo "Envío correcto";
  }else {
  	echo "Error".$mail->ErrorInfo;  // La propiedad errorinfo contiene el error
  }
   
?>