Formulario de Contacto PHP Gratis v3: Adjuntar archivo al mail


Acá va otro update del formulario de contacto en PHP. La nueva funcionalidad permite cargar un archivo y enviarlo como attachment del email usando PHP. Esta versión es en realidad una actualización de la v2. Ahora, además de copiar el archivo en el servidor y enviar el link al archivo en el mail, el script va a enviar el mail adjuntando el archivo del usuario.

Para agregar esta funcionalidad, el formulario utiliza la clase PHPMailer para el envío y proceso. La clase PHPMailer es un script PHP que permite infinitos usos a la hora de procesar envíos de mails con PHP. Se puede usar un determinado servidor SMTP, adjuntar archivos,
Es solo un ejemplo de una posible implementacion de PHPMailer
La clase se puede descargar desde http://phpmailer.sourceforge.net/ Junto con mas ejemplos y documentacion.

La configuración es muy sencilla, sólo deben descomprimir los archivos y editar las primeras lineas del archivo contactenos-v3.php. Luego deben crear una carpeta llamada “archivos”, y asignarle CHMOD 777. Hay que mantener el archivo class.phpmailer.php en el mismo directorio. El archivo class.smtp.php nos va a permitir realizar configuraciones adicionales, como utilizar otros servidores SMTP llegado el caso.

—————————————-
ACTUALIZACION 17-01-2008
Debido a varias preguntas, he subido una versión del formulario que no valida los campos, ni el tamaño, ni el formato del archivo.

—————————————-
Ejemplos:

Formulario para envio de mail con archivo adjunto. (con validación de datos)

Formulario para envio de mail con archivo adjunto. (SIN validación de datos)

Descargar:
contactenos-v3.zip (con validación de datos)
contactenos V3.1.zip (sin validación de datos)

Espero que les sirva.

Esta entrada fue publicada en PHP y etiquetada , , . Guarda el enlace permanente.

145 respuestas a Formulario de Contacto PHP Gratis v3: Adjuntar archivo al mail

  1. Hola dice:

    He tenido problemas con mi página de contacto por en el hosting Dattatec cambiaron algo y realmente no pude solucionarlo.
    Buscando encontré este sitio y tus formularios pero casi no conozco nada de php y no he podido hacerlo funcionar. Tengo varias consultas:
    1) ¿debo crear un directorio llamado Archivos y ahí colocar todos los archivo?
    2) ¿solo tengo que modificar el archivo contactenos-v3.php donde dice $direccion_envio= con mi e-mail?
    3) cuando lo subi por FTP me ha aparecido y lo ejecuto desde: http://www.pozzo-ardizzi.com.ar/archivos/contactenos-v3.php, me aparece el siguiente mensaje de error: HTTP Error 404.0 – Not Found
    Requested URL http://www.pozzo-ardizzi.com.ar:80/archivos/contactenos-v3/archivos/contactenos-v3.php
    Physical Path \\hmfsw\web\dtcwin120\pozzo-ardizzi.com.ar\public_html\archivos\contactenos-v3\archivos\contactenos-v3.php
    Logon Method Anonymous
    Logon User Anonymous

    Son muchas consultas pero estoy perdido!!!!!!!!!!!!!!!!!!! Gracias.

  2. Alfonso dice:

    hola, sobre tus preguntas:
    1) si, la carpeta se tiene que llamar “archivos”. Con minúscula y sin comillas. y esta carpeta tiene que tener permisos de escritura (chmod 777 por ejemplo)
    2) en el archivo .php, hay que modificar $direccion_envio con tu email, y editar la linea 18 $url, y ponerle la URL de tu página.
    3) el archivo contactenos-v3.php tiene que estar fuera de la carpeta “archivos”. Tienen que estar en el mismo nivel de directorio, se entiende?
    a mi no me da error 404, yo puedo ver el archivo.

    saludos!

  3. Alfonso dice:

    Hola Juan Alberto, si no queres adjuntar nada podes usar la V1 del form: http://alfonsocatron.com.ar/2007/03/24/script-formulario-gratis/ o bien la version que no hace verificación de los datos y permite dejar campos vacíos al enviarlo.
    Un saludo!

  4. Alfonso dice:

    Hola Damian. Me alegro que te haya servido.

    para eliminar los archivos del servidor, se puede agregar una línea en el PHP que vaya borrando los archivos.
    Después de la línea 119:
    $mensaje='

    Su archivo ha sido adjuntado con éxito
    Gracias por Contactarnos

    ';

    deberías agregar:
    unlink($_FILES['archivo']['tmp_name'],'archivos/'.$nuevonombre);

    avisame si te funciona, saludos!

  5. Hola dice:

    Alfonso, gracias por la pronta respuesta.

    Corregí lo que me indicaste pero me aparece pero me sigue apreciendo el error 404:
    al ir a la dirección http://www.pozzo-ardizzi.com.ar/contactenos-v3.php llenar el formulario me divuelte el error……
    Requested URL http://www.pozzo-ardizzi.com.ar:80/contactenos-v3/contactenos-v3.php
    Por otro lado, quiero darle permiso chmod 777 con FileZilla y no me lo permite:
    Comando: SITE CHMOD 777 archivos
    Respuesta: 500 ‘SITE CHMOD 777 archivos’: command not understood

  6. Alfonso dice:

    me parece que el error aparece porque no está mostrando correctamente la variable $PHP_SELF.
    podrias probar editando la linea 209 donde abre el formulario y el action pone:

    
    action="< ?php echo $PHP_SELF;?>"
    
    

    y cambiarlo por

    
     action="http://www.pozzo-ardizzi.com.ar/contactenos-v3.php"
    
    
  7. Daniel dice:

    Gracias otra vez.
    Corregí todo y me envío el mensaje de que mi archivo había sido enviado, pero el correo nunca me llegó, ¿sabés por qué puede ser?

  8. Gonzalo dice:

    Hola, a traves de las consultas que fueron haciendo, fui modificando y arreglando todo. Pero desp de mostrar el mensaje de mensaje enviado, no recibo el mail.

    Cual puede ser el problema?

    Muchas gracias

    saludos

  9. Alfonso dice:

    Hola Gonzalo, un par de cosas para chequear:
    - configuraste bien tu dirección de email?
    - tu servidor permite usar la función mail() de PHP?

    fijate esas dos cosas primero que nada.
    saludos!

  10. iñigo dice:

    Me ha venido perfecto este formulario. PERFECTO!!
    Lo unico me asalta una duda.
    Estoy intentando implementar un menu de lista desplegable.
    He añadido otro valor “ciudad” y me gustaría poner el listado de ciudades para elegir.
    Consigo ponerlo pero no validarlo para que lo envie.
    como podría hacerlo?
    Gracias por todo.

  11. Buenisimo , me funciono , muchas gracias necesito implementarlo para recivir archivos de word.

    no soy muy experto en php

  12. se que este post ya lleva un tiempo pero , podrian colaborarme , necesito que el formulario me permita enviar archivos de word 2003 y 2007.

    gracias no logro que me acepte los formatos , el codigo esta haci :

    case “image/gif”:
    $ext=”gif”;
    break;
    case “image/pjpeg”:
    $ext=”jpg”;
    break;
    case “image/jpeg”:
    $ext=”jpg”;
    break;
    case “image/png”:
    $ext=”png”;
    break;
    case “application/zip”:
    $ext=”zip”;
    break;
    case “application/docx”:
    $ext=”docx”;
    break;
    case “application/doc”:
    $ext=”doc”;
    break;
    case “application/pdf”:
    $ext=”pdf”;
    break;
    case “application/txt”:
    $ext=”txt”;
    break;
    case “application/octet-stream”:
    $extension_type= explode (‘.’, $_FILES['archivo']['name']);
    $ext= end($extension_type);
    if($ext!=”rar”) {$ext=”error”;}
    break;
    default:
    $ext=”error”;
    break;

  13. tengo un gran problema con mi form. El problema es que a la hora de agregar mas cosa en el form en el correo no puedo ver el archivo adjunto y tampoco se me crea en el carpeta”archivos”.

    <?php

    if (isset ($_POST['enviar'])) {

    $Nombre = $_POST['Nombre'];
    $SegundoNombre = $_POST['SegundoNombre'];
    $PrimerApellido = $_POST['PrimerApellido'];
    $SegundoApellido = $_POST['SegundoApellido'];
    $NúmerodeIdentificación = $_POST['NúmerodeIdentificación'];
    $TipodeIdentificación = $_POST['TipodeIdentificación'];
    $Permisodeconducir = $_POST['Permisodeconducir'];
    $Nacionalidad = $_POST['Nacionalidad'];
    $PaísdeResidencia = $_POST['PaísdeResidencia'];
    $CiudaddeResidencia = $_POST['CiudaddeResidencia'];
    $email = $_POST['email'];
    $telefono1 = $_POST['telefono1'];
    $telefono2 = $_POST['telefono2'];
    $GradoAcadémico = $_POST['GradoAcadémico'];
    $OtroEstudio = $_POST['OtroEstudio'];
    $PrimerIdioma = $_POST['PrimerIdioma'];
    $PrimerIdioma1 = $_POST['PrimerIdioma1'];
    $SegundoIdioma = $_POST['SegundoIdioma'];
    $SegundoIdioma2 = $_POST['SegundoIdioma2'];
    $TercerIdioma = $_POST['TercerIdioma'];
    $TercerIdioma3 = $_POST['TercerIdioma3'];
    $Herramienta0 = $_POST['Herramienta'];
    $Herramienta1 = $_POST['Herramienta1'];
    $Herramienta2 = $_POST['Herramienta2'];
    $Herramienta3 = $_POST['Herramienta3'];
    $a1 = $_POST['Recepción'];
    $a2 = $_POST['ÁreaAdministrativa'];
    $a3 = $_POST['Proveeduría'];
    $a4 = $_POST['Logística'];
    $a5 = $_POST['Contabilidad'];
    $a6 = $_POST['Planillas'];
    $a7 = $_POST['PresupuestosElectromecánicos'];
    $a8 = $_POST['BodegasElectromecánicas'];
    $a9 = $_POST['RecursosHumanos'];
    $a10 = $_POST['IngenieríaElectromecánica'];
    $a11 = $_POST['Mensajería'];
    $a12 = $_POST['Electricistas'];
    $a13 = $_POST['Fontaneros'];

    //comprobamos si se adjunto un archivo, y si su tamano es menor al permitido
    if (isset($_FILES['archivo']['tmp_name'])) {
    $tipo=$_FILES['archivo']['type'];
    //Formatos de archivo permitidos, si desean agregar mas, agregar un case para cada formato.
    switch ($tipo) {

    case "application/pdf":
    $ext="pdf";
    break;

    default:
    $ext="error";
    break;

    }

    $aleatorio = rand();
    $nombreoriginal= explode ('.', $_FILES['archivo']['name']);
    $tamano=$_FILES['archivo']['size'];
    $nuevonombre=$nombreoriginal[0].'-'.$aleatorio.'.'.$ext;
    }

    if (isset ($nuevonombre)) {
    if ($ext=="error") {$error_archivo="- Formato de archivo no permitido.”;}
    if ($tamano > $maximo_tamano) {$error_archivo=”- El tamaño de su archivo supera el máximo permitido.”;}
    }

    //comprobamos si todos los campos fueron completados
    if ($nombre!=” && $email!=” && $comentario!=” && $error_archivo==”) {

    // copiamos el archivo en el servidor
    copy($_FILES['archivo']['tmp_name'],’archivos/’.$nuevonombre);

    $header = ‘De parte de: ‘ . $Nombre . ” \r\n”;
    $header .= “X-Mailer: PHP/” . phpversion() . ” \r\n”;
    $header .= “Mime-Version: 1.0 \r\n”;
    $header .= “Content-Type: text/plain”;

    $mensaje = “Nombre: ” . $Nombre . ” \r\n”;
    $mensaje .= “Segundo Nombre : ” . $SegundoNombre . ” \r\n” ;
    $mensaje .= “Primer Apellido : ” . $PrimerApellido . ” \r\n” ;
    $mensaje .= “Segundo Apellido: ” . $SegundoApellido . ” \r\n” ;
    $mensaje .= “Número de Identificación: ” . $NúmerodeIdentificación . ” \r\n” ;
    $mensaje .= “Tipo de Identificación: ” . $TipodeIdentificación . ” \r\n” ;
    $mensaje .= “Permiso de conducir: ” . $Permisodeconducir . ” \r\n” ;
    $mensaje .= “Nacionalidad: ” . $Nacionalidad . ” \r\n” ;
    $mensaje .= “País de Residencia: ” . $PaísdeResidencia . ” \r\n” ;
    $mensaje .= “Ciudad de Residencia: ” . $CiudaddeResidencia . ” \r\n” ;
    $mensaje .= “Correo Electrónico: ” . $email . ” \r\n” ;
    $mensaje .= “Teléfono Principal: ” . $telefono1 . ” \r\n” ;
    $mensaje .= “Teléfono Secundario: ” . $telefono2 . ” \r\n” ;
    $mensaje .= “Grado Académico: ” . $GradoAcadémico . ” \r\n” ;
    $mensaje .= “Otros Estudios: ” . $OtroEstudio . ” \r\n” ;
    $mensaje .= “PrimerIdioma: ” . $PrimerIdioma . ” \r\n” ;
    $mensaje .= “Nivel: ” . $PrimerIdioma1 . ” \r\n” ;
    $mensaje .= “SegundoIdioma: ” . $SegundoIdioma . ” \r\n” ;
    $mensaje .= “Nivel: ” . $PrimerIdioma2 . ” \r\n” ;
    $mensaje .= “TercerIdioma: ” . $TercerIdioma . ” \r\n” ;
    $mensaje .= “Nivel: ” . $PrimerIdioma3 . ” \r\n” ;
    $mensaje .= “Herramienta: ” . $Herramienta . ” \r\n” ;
    $mensaje .= “Nivel: ” . $PrimerIdioma1 . ” \r\n” ;
    $mensaje .= “Otras Herramienta: ” . $Herramienta2 . ” \r\n” ;
    $mensaje .= “Nivel: ” . $PrimerIdioma3 . ” \r\n” ;

    $mensaje .= “Aplica para: ” . $a1 . ” \r\n” ;
    $mensaje .= ” ” . $a2 . ” \r\n” ;
    $mensaje .= ” ” . $a3 . ” \r\n” ;
    $mensaje .= ” ” . $a4 . ” \r\n” ;
    $mensaje .= ” ” . $a5 . ” \r\n” ;
    $mensaje .= ” ” . $a6 . ” \r\n” ;
    $mensaje .= ” ” . $a7 . ” \r\n” ;
    $mensaje .= ” ” . $a8 . ” \r\n” ;
    $mensaje .= ” ” . $a9 . ” \r\n” ;
    $mensaje .= ” ” . $a10 . ” \r\n” ;
    $mensaje .= ” ” . $a11 . ” \r\n” ;
    $mensaje .= ” ” . $a12 . ” \r\n” ;
    $mensaje .= ” ” . $a13 . ” \r\n” ;

    $contenido .= ‘Archivo: ‘.$nuevonombre.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;

    $mensaje .= “Enviado el ” . date(‘d/m/Y’, time());

    $para = ‘maroto20@hotmail.com’;
    $asunto = ‘Contacto Telemeca’;
    mail($para, $asunto, utf8_decode($mensaje), $header);
    }
    }
    echo ‘Mensaje enviado correctamente’;

    ?>

    Regresar

  14. Amigo ocupo de tu ayuda osea ya no me da la cabeza. Y saludos desde Costa Rica.

  15. Pancho dice:

    Gracias por el formulario funciona perfecto, necesitaria hacer que pueda subir y adjuntar multiples archivos mediante varios campos y la verdad no se como hacerlo, probe varias alternativas y ninguna me envia por mail los adjuntos.
    Muchas gracias por la ayuda.

  16. Pancho dice:

    Alguien pudo enviar multiples archivos haciendo alguna modificacion a este ejemplo? Gracias y perdon que sea repetitivo.

  17. jesus dice:

    realmente muy buen material para alguien novato como yo, muchas gracias

  18. Roger dice:

    Una pregunta como puedo agregar mas archivos adjuntos para q se suban al server.

  19. Sergio dice:

    Hola Alfonso. Desde ya MUCHAS GRACIAS por tus aportes. Utilizo el formulario más sencillo que has publicado hace mucho y te quería preguntar porqué cuando recibo el mail me llega con la palabras que tienen tilde de esta manera: “…requiere que se completen todos los campos y cuando nos envía el mail toma la dirección de la persona que lo envió …” Cómo lo puedo solucionar ?

  20. Alfonso dice:

    Para los que están preguntando por cargas de archivos múltiples.
    Es posible hacerlo, pero hay que modificar el formulario.
    Cuando tenga un poco de tiempo voy a armar un nuevo formulario con carga de archivos múltiples.
    Saludos!

  21. jordi dice:

    Buenas, me funciona correctamente pero tengo una duda:

    Quiero añadir un campo “select” y elegir entre 2 opciones. Cómo lo debo hacer para que se me envíe la opción del select elegida junto con los otros datos del formulario?? no me acaba de salir.

    Gracias y felicidades por el formulario !

  22. Alfonso dice:

    Sergio, lo que comentas parece un problema de codificación de caracteres.
    Seguramente, el código del formulario está puesto en una página con una codificación UTF-8, y el formulario envía los mails con codificación iso-8859-1.

    Es muy simple de arreglar, a la línea que envia los emails, cambiale el charset:
    "From: $email\nContent-Type: text/html; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit"

    por

    "From: $email\nContent-Type: text/html; charset=utf-8\nContent-Transfer-Encoding: 8bit"

  23. Pingback: Formulario de contacto con múltiples archivos adjuntos | I'm Not A User */

  24. Eric Garcia dice:

    Hola muchas gracias por este formulario esta super efectivo, solo tengo un problemita al querer eliminar el archivo que se guarda en el servidor puse el codigo que mencionas el unlink pero me arroja este error:
    Warning: unlink() expects parameter 2 to be resource, string given in /home/u116934/domains/arecon.com.mx/public_html/ejemplo/cv/contactenos-v3.php on line 123
    tendra solucion?

  25. antonio dice:

    Hola el formulario funciona perfectamente, pero cuando el usuario monta archivos, pero cuando el que no quiere mandar archivos le aparece error y a mi me llega correo con archivos de otro ósea de uno viejo.
    Me podrías ayudar la idea es que si alguien desea o no enviar archivos adjuntos no aparezca error.

    Gracias
    _________________________________________

    From = $_POST['email'];
    $mail->FromName = $_POST['nombre'];
    $mail->AddAddress($direccion_envio);
    $mail->Subject = “Reserva Clasificado Inmueble”;
    $mail->AddReplyTo($_POST['email'],$_POST['nombre']);
    $mail->IsHTML(true);

    if (isset($_FILES['foto1']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre1=$aleatorio.’-’.$_FILES['foto1']['name'];
    }
    copy($_FILES['foto1']['tmp_name'],’fotos/’.$nuevonombre1);

    if (isset($_FILES['foto2']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre2=$aleatorio.’-’.$_FILES['foto2']['name'];
    }
    copy($_FILES['foto2']['tmp_name'],’fotos/’.$nuevonombre2);

    if (isset($_FILES['foto3']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre3=$aleatorio.’-’.$_FILES['foto3']['name'];
    }
    copy($_FILES['foto3']['tmp_name'],’fotos/’.$nuevonombre3);

    if (isset($_FILES['foto4']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre4=$aleatorio.’-’.$_FILES['foto4']['name'];
    }
    copy($_FILES['foto4']['tmp_name'],’fotos/’.$nuevonombre4);

    if (isset($_FILES['foto5']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre5=$aleatorio.’-’.$_FILES['foto5']['name'];
    }
    copy($_FILES['foto5']['tmp_name'],’fotos/’.$nuevonombre5);

    if (isset($_FILES['foto6']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre6=$aleatorio.’-’.$_FILES['foto6']['name'];
    }
    copy($_FILES['foto6']['tmp_name'],’fotos/’.$nuevonombre6);

    if (isset($_FILES['foto7']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre7=$aleatorio.’-’.$_FILES['foto7']['name'];
    }
    copy($_FILES['foto7']['tmp_name'],’fotos/’.$nuevonombre7);

    if (isset($_FILES['foto8']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre8=$aleatorio.’-’.$_FILES['foto8']['name'];
    }
    copy($_FILES['foto8']['tmp_name'],’fotos/’.$nuevonombre8);

    $contenido = ”;
    $contenido .= ‘Reserva Clasificado Inmueble’;
    $contenido .= ‘Enviado el ‘.date(“d M Y”).”;
    $contenido .= ”;
    $contenido .= ‘Anunciante: ‘.$_POST['anunciante'].’‘;
    $contenido .= ‘Cedula o Nit: ‘.$_POST['ceduonit'].’‘;
    $contenido .= ‘Direccion del Anunciante: ‘.$_POST['direccion2'].’‘;
    $contenido .= ‘Ciudad del Anunciante: ‘.$_POST['ciudadanun'].’‘;
    $contenido .= ‘Telefono o celular del Anunciante: ‘.$_POST['telefono'].’‘;
    $contenido .= ‘Email del Anunciante: ‘.$_POST['email'].’‘;
    $contenido .= ‘________________________________ ‘.$_POST[''].’‘;
    $contenido .= ‘Direccion del Inmueble: ‘.$_POST['direccion'].’‘;
    $contenido .= ‘Barrio del Inmueble: ‘.$_POST['barrio'].’‘;
    $contenido .= ‘Ciudad del Inmueble: ‘.$_POST['cuidad'].’‘;
    $contenido .= ‘Estrato: ‘.$_POST['estrato'].’‘;
    $contenido .= ‘Zona Norte: ‘.$_POST['norte'].’‘;
    $contenido .= ‘Zona Oriente: ‘.$_POST['oriente'].’‘;
    $contenido .= ‘Zona Centro: ‘.$_POST['centro'].’‘;
    $contenido .= ‘Zona Occidente: ‘.$_POST['occidente'].’‘;
    $contenido .= ‘Zona Sur: ‘.$_POST['sur'].’‘;
    $contenido .= ‘Valor Venta Inmueble: ‘.$_POST['venta'].’‘;
    $contenido .= ‘Mensualidad de Administracion: ‘.$_POST['administracion'].’‘;
    $contenido .= ‘Valor Arriendo Inmueble: ‘.$_POST['arriendo'].’‘;
    $contenido .= ‘Numero de Habitaciones: ‘.$_POST['numerohabitaciones'].’‘;
    $contenido .= ‘Parqueadero: ‘.$_POST['parqueadero'].’‘;
    $contenido .= ‘Numero de Baños: ‘.$_POST['baños'].’‘;
    $contenido .= ‘Incluye Servicios: ‘.$_POST['si'].’‘;
    $contenido .= ‘No Incluye Servicios: ‘.$_POST['no'].’‘;
    $contenido .= ‘Facilidades del Inmueble: ‘.$_POST['facilidades1'].’‘;
    $contenido .= ‘Continuacion de Facilidades del Inmueble: ‘.$_POST['facilidades2'].’‘;
    $contenido .= ‘foto1: ‘.$nuevonombre1.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto2: ‘.$nuevonombre2.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto3: ‘.$nuevonombre3.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto4: ‘.$nuevonombre4.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto5: ‘.$nuevonombre5.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto6: ‘.$nuevonombre6.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto7: ‘.$nuevonombre7.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto8: ‘.$nuevonombre8.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;

    $contenido .= ”;
    $contenido .= ”;

    $mail->Body = $contenido;
    $mail->AddAttachment(‘archivos/’.$nuevonombre.”, $nuevonombre);

    $mail->Send();

    $flag=’ok’;
    $mensaje=’Datos del Inmueble enviados exitosamente Gracias por Contactarnos’;

    }
    ?>

    Reserva Clasificado

    DATOS DEL INMUEBLE

    PARA ARRIENDO O VENTA

    <form action="” method=”post” enctype=”multipart/form-data”>
     

    Direccion:

    Ciudad:


    Zona

    Norte

    Oriente

    Centro

    Occidente

    Sur

    Valor Venta: $

    Administracion: $

    Arriendo: $

    Numero de Habitaciones:


    Barrio:

    Numero de Parqueaderos:


    Baños:

    Estrato:


    Incl. Servicios:

    Si

    No

    Facilidades del Inmueble:

    Foto 1:

    Foto 2:

    Foto 3:


    Foto 4:

    Foto 5:


    Foto 6:


    Foto 7:


    Foto 8:

    DATOS DEL ANUNCIANTE

     

    Anunciante:

    Cedula O Nit:

    Telefono o Celular:


    Email:

    Direccion:

    Cuidad

     

     
     

  26. antonio dice:

    Listo, ya quedo solucionado el problemita,
    habia que ponerle a cada foto, y funciona de maravilla, me llega un numero aleatorio sin archivo pero que mas da.. hara sigue es decirle que tipos de archivos son permitidos y de que tamaño, hay MAMA…!
    _______________________________________________________________________
    Solucion:
    if (is_uploaded_file($_FILES['foto1']['tmp_name'])) {
    copy($_FILES['foto1']['tmp_name'],’fotos/’.$nuevonombre1);
    }
    _______________________________________________________________________

    From = $_POST['email'];
    $mail->FromName = $_POST['nombre'];
    $mail->AddAddress($direccion_envio);
    $mail->Subject = “Reserva Clasificado Inmueble”;
    $mail->AddReplyTo($_POST['email'],$_POST['nombre']);
    $mail->IsHTML(true);

    if (isset($_FILES['foto1']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre1=$aleatorio.’-’.$_FILES['foto1']['name'];
    }
    if (is_uploaded_file($_FILES['foto1']['tmp_name'])) {
    copy($_FILES['foto1']['tmp_name'],’fotos/’.$nuevonombre1);
    }

    if (isset($_FILES['foto2']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre2=$aleatorio.’-’.$_FILES['foto2']['name'];
    }
    if (is_uploaded_file($_FILES['foto2']['tmp_name'])) {
    copy($_FILES['foto2']['tmp_name'],’fotos/’.$nuevonombre2);
    }

    if (isset($_FILES['foto3']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre3=$aleatorio.’-’.$_FILES['foto3']['name'];
    }
    if (is_uploaded_file($_FILES['foto3']['tmp_name'])) {
    copy($_FILES['foto3']['tmp_name'],’fotos/’.$nuevonombre3);
    }

    if (isset($_FILES['foto4']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre4=$aleatorio.’-’.$_FILES['foto4']['name'];
    }
    if (is_uploaded_file($_FILES['foto4']['tmp_name'])) {
    copy($_FILES['foto4']['tmp_name'],’fotos/’.$nuevonombre4);
    }

    if (isset($_FILES['foto5']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre5=$aleatorio.’-’.$_FILES['foto5']['name'];
    }
    if (is_uploaded_file($_FILES['foto5']['tmp_name'])) {
    copy($_FILES['foto5']['tmp_name'],’fotos/’.$nuevonombre5);
    }

    if (isset($_FILES['foto6']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre6=$aleatorio.’-’.$_FILES['foto6']['name'];
    }
    if (is_uploaded_file($_FILES['foto6']['tmp_name'])) {
    copy($_FILES['foto6']['tmp_name'],’fotos/’.$nuevonombre6);
    }

    if (isset($_FILES['foto7']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre7=$aleatorio.’-’.$_FILES['foto7']['name'];
    }
    if (is_uploaded_file($_FILES['foto7']['tmp_name'])) {
    copy($_FILES['foto7']['tmp_name'],’fotos/’.$nuevonombre7);
    }

    if (isset($_FILES['foto8']['tmp_name'])) {
    $aleatorio = rand();
    $nuevonombre8=$aleatorio.’-’.$_FILES['foto8']['name'];
    }
    if (is_uploaded_file($_FILES['foto8']['tmp_name'])) {
    copy($_FILES['foto8']['tmp_name'],’fotos/’.$nuevonombre8);
    }

    $contenido = ”;
    $contenido .= ‘Reserva Clasificado Inmueble’;
    $contenido .= ‘Enviado el ‘.date(“d M Y”).”;
    $contenido .= ”;
    $contenido .= ‘Anunciante: ‘.$_POST['anunciante'].’‘;
    $contenido .= ‘Cedula o Nit: ‘.$_POST['ceduonit'].’‘;
    $contenido .= ‘Direccion del Anunciante: ‘.$_POST['direccion2'].’‘;
    $contenido .= ‘Ciudad del Anunciante: ‘.$_POST['ciudadanun'].’‘;
    $contenido .= ‘Telefono o celular del Anunciante: ‘.$_POST['telefono'].’‘;
    $contenido .= ‘Email del Anunciante: ‘.$_POST['email'].’‘;
    $contenido .= ‘________________________________ ‘.$_POST[''].’‘;
    $contenido .= ‘Direccion del Inmueble: ‘.$_POST['direccion'].’‘;
    $contenido .= ‘Barrio del Inmueble: ‘.$_POST['barrio'].’‘;
    $contenido .= ‘Ciudad del Inmueble: ‘.$_POST['cuidad'].’‘;
    $contenido .= ‘Estrato: ‘.$_POST['estrato'].’‘;
    $contenido .= ‘Zona Norte: ‘.$_POST['norte'].’‘;
    $contenido .= ‘Zona Oriente: ‘.$_POST['oriente'].’‘;
    $contenido .= ‘Zona Centro: ‘.$_POST['centro'].’‘;
    $contenido .= ‘Zona Occidente: ‘.$_POST['occidente'].’‘;
    $contenido .= ‘Zona Sur: ‘.$_POST['sur'].’‘;
    $contenido .= ‘Valor Venta Inmueble: ‘.$_POST['venta'].’‘;
    $contenido .= ‘Mensualidad de Administracion: ‘.$_POST['administracion'].’‘;
    $contenido .= ‘Valor Arriendo Inmueble: ‘.$_POST['arriendo'].’‘;
    $contenido .= ‘Numero de Habitaciones: ‘.$_POST['numerohabitaciones'].’‘;
    $contenido .= ‘Parqueadero: ‘.$_POST['parqueadero'].’‘;
    $contenido .= ‘Numero de Baños: ‘.$_POST['baños'].’‘;
    $contenido .= ‘Incluye Servicios: ‘.$_POST['si'].’‘;
    $contenido .= ‘No Incluye Servicios: ‘.$_POST['no'].’‘;
    $contenido .= ‘Facilidades del Inmueble: ‘.$_POST['facilidades1'].’‘;
    $contenido .= ‘Continuacion de Facilidades del Inmueble: ‘.$_POST['facilidades2'].’‘;
    $contenido .= ‘foto1: ‘.$nuevonombre1.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto2: ‘.$nuevonombre2.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto3: ‘.$nuevonombre3.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto4: ‘.$nuevonombre4.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto5: ‘.$nuevonombre5.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto6: ‘.$nuevonombre6.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto7: ‘.$nuevonombre7.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;
    $contenido .= ‘foto8: ‘.$nuevonombre8.’ (formato:’.$ext.’ – ‘.$tamano.’ bytes)‘;

    $contenido .= ”;
    $contenido .= ”;

    $mail->Body = $contenido;
    $mail->AddAttachment(‘archivos/’.$nuevonombre.”, $nuevonombre);

    $mail->Send();

    $flag=’ok’;
    $mensaje=’Datos del Inmueble enviados exitosamente Gracias por Contactarnos’;

    }
    ?>

    Reserva Clasificado

    DATOS DEL INMUEBLE

    PARA ARRIENDO O VENTA

    <form action="” method=”post” enctype=”multipart/form-data”>
     

    Direccion:

    Ciudad:


    Zona

    Norte

    Oriente

    Centro

    Occidente

    Sur

    Valor Venta: $

    Administracion: $

    Arriendo: $

    Numero de Habitaciones:


    Barrio:

    Numero de Parqueaderos:


    Baños:

    Estrato:


    Incl. Servicios:

    Si

    No

    Facilidades del Inmueble:

    Foto 1:

    Foto 2:

    Foto 3:


    Foto 4:

    Foto 5:


    Foto 6:


    Foto 7:


    Foto 8:

    DATOS DEL ANUNCIANTE

     

    Anunciante:

    Cedula O Nit:

    Telefono o Celular:


    Email:

    Direccion:

    Cuidad

     

     
     

  27. Alex dice:

    Buen día amigo
    He usado tu código (la versión sin validación) pero aunque el formulario se visualiza correctamente, realmente no envía el correo y tampoco adjunta el archivo.

    el formulario está publicado en la siguiente dirección:

    http://pilamar.com/index.php?option=com_wrapper&view=wrapper&Itemid=173

    Espero me puedas dar alguna luz de porque no funciona.

    Gracias!

  28. Antonio dice:

    Me quede atrapado otra vez.
    Nesecito que el valor del contador llegue junto con los demas datos del formulario, pero por mas que he probado nada, Me pueden ayudar?!

  29. ANDRES NAU dice:

    Tengo un solo problema, el resto lo solucione y anda excelente. Entiendo que es una publicacion vieja, pero quiza me puedan ayudar. Mi problema es que al enviar, me triplica el envio, osea, me llega 3 veces el mail a la casilla. Alguien sabe que puede ser? Gracias!

  30. ANDRES NAU dice:

    La consulta anterior la solucione! pero tengo un problema al no adjuntar archivos con el formulario SIN VALIDACION…

    envia el mail, pero a su vez me devuelve este error:
    Warning: copy() [function.copy]: Filename cannot be empty in C:\XXXXXX\XXXXXX\serparte.org\wwwroot\contactenos.php on line 50

    puse “xxxx” para tapar ciertos datos del server…

    si me podes ayudar te lo agradezco! saludos!

  31. Fernando dice:

    Tengo el mismo problema de ANDRES NAU me aparece el mismo error, ya lo estuve buscando en google y no encuentro solucion, espero que alguien nos pueda ayudar.

    Por otra parte excelente aporte.

  32. Alfonso dice:

    Andrés y Fernando.
    Es verdad lo que indican, ya está corregido ese error.
    Prueben bajar de nuevo el formulario sin validación de datos.

    saludos!

  33. Richard dice:

    Hola estimados, necesito de su ayuda porfavor.

    Bueno les cuento, el formulario me funciona a medias. Cuando envio el formulario en la pagina me aparece lo siguiente:
    Warning: copy(archivos/1982093476-web en contruccion.jpeg) [function.copy]: failed to open stream: No such file or directory in /home/mantosde/public_html/contacto/contactenos-v3.1.php on line 48

    y luego en mi correo me llega todo bien detallado pero cuando trato de abrir el archivo adjunto me sale esto:
    The requested URL /contacto/archivos/1982093476-web+en+contruccion.jpeg was not found on this server.

    Me puedes ayudar porfavor!

    Muchas Gracias

  34. andreu dice:

    lo he probado y funciona cojonudamente. Muchas gracias

  35. Alejandro dice:

    Hola, después de enviar los datos no se como hacer que vaya a la pagina de inicio y siempre me salen estos mensajes de error:

    Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/content/86/7061986/html/cochegolpescom/en/class.phpmailer.php on line 1091

    Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/content/86/7061986/html/cochegolpescom/en/class.phpmailer.php on line 1095

    ¿Se puede arreglar algo?

  36. David Gil dice:

    Hola otra vez Alfonso.

    Esta versión del formulario está genial. Te hago la misma pregunta. Me interesa tener como obligatorios los campos de nombre y email. ¿Cómo lo hago?

    Mil gracias.

  37. Jairo dice:

    Buenas tardes, estoy intentando implementar el formulario en una web, y en principio funciona genial, solamente quería saber qué tengo que hacer para que no se tenga que adjuntar necesariamente un fichero, pero en el caso de que si lo adjuntase, valide el tamaño y formato del archivo.
    Otra cosa, ¿es posible implementar un captcha?

    Muchas gracias por tu trabajo.

  38. Piter dice:

    Excelentes aportes de código.

    Gracias.

  39. silnose dice:

    Muchas gracias por la ayuda me sirvió muchísimo :) …solo un aporte para la versión que valida los datos cuando se quiere subir archivos .docx dentro del SWITCH deben agregar lo siguiente

    case “application/vnd.openxmlformatsofficedocument.wordprocessingml.document”:
    $ext=”docx”;

  40. Adhemir dice:

    Gracias Alfonso por el aporte, me ayudaste a resolver un problema que arrastraba desde hace tiempo.
    Saludos.

  41. Jorge dice:

    Hola Alfonso, tu codigo es una maravilla he logrado adaptarlo para incripciones a un congreso, pero hay una duda y si me pudieras ayudar te agradecere infinitamente. Lo que pretendo es adaptar este código para que el usuario tenga que elegir una sola opcion:
    <blockquote cite"
    .: Seleccione Tipo .:.
    modalidad 1
    modalidad 2
    modalidad 3
    “> por favor ayudame. y gracias de antemano! .. desde Perú

  42. Daniel dice:

    Saludos Alfonso.
    Desde hace mucho sigo tus comentarios y aportes, pero en realidad no fue hasta hace poco que decidi usar tus formularios, en mi caso trabajaron geniales, solo que en la V2 cuando recibia el enlace por email al hacer clic en el mismo en vez del archivo abria el formulario, cosa que solucione eliminando del codigo el nombre del formulario antes de la carpeta archivos y me funciono genial, ¿exite la manera de que el usuario reciba tambien copia del correo o del enlace para que este tenga acceso al archivo tambien?

  43. Alfonso dice:

    Hola Jorge. Gracias por tu comentario! Para permitir selccionar sólo una opción, deberias usar el tipo de elemento radio button. Aca explican cómo se hace: http://www.htmlcodetutorial.com/forms/_INPUT_TYPE_RADIO.html

  44. Jorge dice:

    Hola Alfonso!! muchas gracias por el tutorial que me diste, aunque me explique mal, lo que quería era una lista, en la página que me diste encontré ese tema, y me guié para implementarlo el resultado es el siguiente http://portaljoven.net/envio/BACKUP.php gracias amigo por compartir lo que sabes!! saludos y éxito con tu empresa.. claro sin descuidar el blog jeje!

  45. Jorge dice:

    ah me olvidaba.. si tienes algún consejo para optimizar lo que hice, gusto lo recibo!! :D

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>