Formulario de Contacto PHP Gratis v2: Permitir al Usuario Enviar un Archivo

Debido a algunas consultas que recibí preguntando cómo se podía hacer para adjuntar un archivo en el email, utilizando como base el formulario de contacto, decidí preparar esta v2.

Opté por realizar un upload de archivo al servidor en donde está alojado el formulario, y luego enviar el mail de contacto con un link para descargar el archivo. Funciona bien, y me parece mas apropiado para evitar descargar emails con archivos adjuntos de gran tamaño.

En la configuración del script, podemos indicar el tamaño máximo permitido del archivo, los formatos que vamos a permitir subir a los usuarios – en este caso están habilitados: .jpg, .gif, .png y .zip, pero pueden habilitarse otros – la ruta a la carpeta donde se guardarán los archivos, y el email a donde vamos a recibir el formulario.

Luego de subir el formulario al servidor, debemos crear una carpeta donde se guardarán los archivos (en este caso, creativamente la he llamado “archivos“). Es necesario que esta carpeta de uploads tenga permisos de lectura y escritura. Esto se configura a través de un cliente de FTP o de SSH, asignándole CHMOD 777.

Pueden ver un ejemplo del formulario acá. Están deshabilitados tanto el upload de archivos como la notificación por email.

Espero que les sirva.

Descargar Formulario v2

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

50 respuestas a Formulario de Contacto PHP Gratis v2: Permitir al Usuario Enviar un Archivo

  1. leo dice:

    Excelente formulario lo recomiendo mucho

  2. Sebastian dice:

    hola Alfonso: primero que nada te quiero felicitar por este tremendo formulario, me ha gustado y ayudado mucho, pero quiero pedirte un favor si es posible. como lo hago para que el archivo que suba se aloje directamente en mi cuenta de correo y no en la carpeta raiz del ftp? seria de gran ayuda que me dijieras.
    gracias

  3. Alfonso dice:

    Hola Leo, gracias por tu comentario!

    Sebastian, debido a un par de pedidos que me han llegado, ya estoy preparando la V3 del formulario, que en vez de subir la imagen al servidor va a adjuntar el archivo en el correo.
    En algunos dias seguramente lo voy a publicar.
    Un saludo

  4. Sebastian dice:

    Gracias alfonso, esperare con ganas que lo tengas listo.
    saludos

  5. sebastian dice:

    alfonso quisiera saber, si ya estas proximo a poner la version 3 del formulario de contacto, ya que realmente lo necesito urgente.
    gracias

  6. Alfonso dice:

    hola sebastian, he estado un poco atascado en el trabajo.
    si necesitas urgente una forma de adjuntar archivos a un form de envio de email, podes chequear una clase PHP que se llama PHPMAILER
    http://phpmailer.sourceforge.net/

    es realmente espectacular, y muy fácil de implementar.

  7. sebastian dice:

    gracias alfonso tratare ver como lo hago ya que tengo poco conocimiento en php. y vere como el html para que funke con el php.
    gracias man.
    de todas maneras esperare el tuyo.
    saludos

  8. alfonso dice:

    hola gente,
    queria avisarles que he actualizado el formulario a la V3.
    ahora, a traves de la clase PHPmailer, permite adjuntar el archivo en el mail.

    http://www.alfonsocatron.com.ar/2007/10/15/formulario-de-contacto-php-gratis-v3-adjuntar-archivo-al-mail/

    Agradecere cualquier comentario/sugerencia.

  9. Luis dice:

    por mas que pruebo no llega el comentario a mi correo

  10. Juan Manuel dice:

    excelente el formulario, gracias habia probado con varios y no habia tenido un resultado completo, gracias

  11. JOSUE dice:

    asdasdasd

  12. oscar ojeda dice:

    hola amigo, me podrias decir donde puedo bajar una version en la que no tenga la opcion de envio de archivo, estaria perfecto un formulario como el que haz implementado para los comentarios (este en el que escribo) te agradecere mucho me ayudes…

  13. oscar ojeda dice:

    amigo baje la primera version, y te lo quiero agradecer muchisimo, ya que funciona pero hay una curiosidad que descubri, cuando lo probe con una direccion de correo en hotmail y no me funciono al menos en todo el tiempo que espere que llegue el correo, nunca llego, pero cuando le cambie a un correo en gmail funciona perfectamente, a que se debe esto y si es que se lo podria optimizar para que funcione con hotmail…gracias de nuevo por el script wenaso, en un par de minutos solucione el problema que me llevo media noche y tremendo dolor de cabeza en tratar de implementar un form para mi web y al final quedar frustrado por no haberlo podido lograr…gracias lo formatiare a mi gusto…

  14. oscar ojeda dice:

    funciona biennnnnn para correos de gmail.

  15. Victor dice:

    Hola que tal mucho gusto gracias por ayudar , veras yo copio tu ejemplo y cambio en dreamweber el correo y lo subo a mi pagina en la carpeta www
    solo el archivo php tengo que hacer algo mas ??? te agradeceria mucho tu ayuda

  16. abraham dice:

    echame la mano me marca el siguiente error

    Warning: copy(archivos/administrador-1478228476.jpg) [function.copy]: failed to open stream: No such file or directory in /home/dgcontro/public_html/PRUEBAS/contactenos-v2.php on line 67

    cambie a permisos 777

    que podra estar mal?????

    para sabe r cuando repondan mi mail es branimlm@hotmail.com

  17. carly dice:

    Muy bueno

  18. Nana dice:

    Ola mira una pregunta x k cuando lelga el correo a mi bandeja de entraba me llega con @entre……… como puedo cambiar eso????

  19. mail dice:

    “>Muy bueno

  20. eliz dice:

    holassssssssssss

  21. Hector dice:

    Me salvaste con este tutorial…Infinitas gracias

  22. Augusto dice:

    Hola, primero gracias por la v1, la más basica, me sirvió muchisimo. Quisiera saber como debo hacer para agregar el campo TELEFONO. Lo intenté hacer pero cuando recibia el mail, me aparecia el telefono que lleno la persona en el campo mail, y el campo telefono me aparecia vacio. Muchas Gracias

  23. Johann dice:

    Hola,
    respecto a la version 1, super, me funciona bien, es decir, lo subi a mi web y todo bien, mande y recibi correos, pero el asunto es que, no quiero usar el formulario como un pop up, sino, el formulario tenerlo en mi pagina web, y que desde ahi se envie, he tratado de mil formas y no he podido, la unica forma para que funcione, he tenido que crear un enlace, osea, un acceso directo donde diga, contactar aqui, y cuando hacen click, abre otra ventana que es el PHP que enviaste, es posible de agregarlo a mi pagina HTML, gracias.

  24. luis dice:

    hola como estas , acabo de implementar tu formulario y va de maravillas , pero tengo una duda me gustaria saber como hacer para q envie los mail auqnue no se alla adjuntado un archivo q no sea requerido para el envio, cosa q el usuario envie si kiere o no quiere enviar una foto por ejemplo , ….. gracias por el aporte la verdad q va muy bien y espero me puedas dar una manito :-)

  25. pablo dice:

    Hola, cual es el tamaño maximo de los archivos q puedo adjuntar??? ya q tengo implementado una solucion con phpmailer pero solo me deja adjuntar 500kb(malisimo!)…saludos ;)

  26. Maco dice:

    Hola. Gracias por el formulario, baje la versión 1 y me funciona muy bien. excelente trabajo. Solo tengo una duda, le puse un botón de borrar pero cuando se ha enviado el formulario y aparece el aviso de “gracias” ya no se puede borrar. Hay alguna forma de hacer esto?

    De antemano muchas gracias por tu respuesta.

  27. Maco dice:

    o que en su defecto el formulario quede limpio después de ser eviado?

  28. Andrea dice:

    Hola,
    Muy buen trabajo, me encanto la solucion, pero tengo un problema con la version 2.
    Solamente quiero que se puedan adjuntar archivos zip o rar, pero no funciona con ninguna de las 2 opciones, de hecho en tu formulario de ejemplo tambien da error cuando adjunto un archivo zip.

    Podrias ayudarme??
    gracias

  29. gra dice:

    Hola Alfonso, te felicito porque te dedicas muchisimo
    a ayudarnos, te cuento que puse la version 1 del form pero no me llegan las consultas desde mi web, cambie como dices la linea 25 con mi direccion, pero nada, y mi servidor tiene soporte php y la funcion mail ya que un par de meses atras yo habia armado un form lo subi y me funciono pero despues le modifique unas cosas al diseño y desde entonces no funciono mas, osea que ya probe queque se puede con mi servidor. que puedo hacer?
    fijate en mi web que cuando abris el link de contacto se abre la hoja con mis datos y si se quiere enviar desde la web se abre el outlook, pero al final de esa hoja le agregue in link “contacto” desde el cual se abre tu formulario, lo puse asi para probarlo despues si me funciona le modificaré la ubicacion.
    Gracias por tu ayuda

  30. JaviGaar dice:

    Buenísimo. De lo más claro y didáctico que he encontrado al respecto. Gracias por compartirlo!

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

  32. Pingback: Script de formulario php… gratis, listo para usar! | I'm Not A User */

  33. Buenas tardes desde España, Alfonso:
    Lo cierto es que estoy un poco perdida con el tema de los formularios de contacto con PHP. El código de mi formulario es el siguiente:

    Name:
    Email:
    Phone:
    Comment:
       

    Mi problema es que no se exactamente cómo crear el código para el archivo “envia_contact.php”. He leído que se puede incluir en el mismo lugar que el código del formulario pero estoy un poco saturada y la verdad es que desconozco tanto el código para poder hacerlo funcionar como también, la manera correcta de hacerlo.

    Si puedes ayudarme, te lo agradecería enormemente. Un saludo.

  34. Alfonso dice:

    Marta, recién veo tu comentario.
    Si, podés incluir el código de proceso del form en el mismo archivos.
    Los formularios tienen en la etiqueta form un parametro: “action”.
    en action le indicas a dónde va a ir el form cuando aprietes enviar.

    Hace un tiempo publiqué un formulario muy sencillo de ejemplo:
    http://alfonsocatron.com.ar/2007/03/24/script-formulario-gratis/

    Si te fijas en el código, vas a ver cómo está hecho el proceso del envío.
    espero que te sirva, saludos!

  35. javier dice:

    los formulario no poseen el codigo html par aintegrarlo dentro de una web html.

  36. HOLA felicitaciones por el formulario. Lo estoy instalando y me ha funcionado bien. Tengo unas consultas.

    - Es posible agreagarle un código captcha para no correr el riesgo de que se llene mi carpeta con correos basuras que envian desde robot?

    - Córro el riesgo de que me envien VIRUS?

    Gracias por todo y de verdad el formulario y explicaciones está super prácticas.

    Patricio

  37. David Gil dice:

    Buenos días.
    Lo primero agradecerte tu esfuerzo por hacernos todo más fácil y, sobretodo, por aguantarnos a todos los que te hacemos peticiones o te comentamos problemas :-)

    Mi duda es la siguiente, ¿cómo puedo hacer para que el envío de ficheros no sea obligatorio?

    Gracias!

  38. Pimaor dice:

    Muchas gracias por tus diseños.
    Me estoy volviendo loca buscando cómo hacer para crear los archivos que debo adjuntar al formulario. Qué formato tienen, cómo lo hago. Soy novata en esto. Un saludo

  39. ojosrojos0x0 dice:

    Hola,

    como hacerle para que en el correo de llegada el remitente tenga la direccion de correo que pone en el campo correo, como en el formulario v3?

    Graciias, y saludos

  40. ojosrojos0x0 dice:

    Hola,
    Sobre mi comentario anterior, cambie el campo de la variable: From: $nombre\ …. por
    From: $email\…

    y funciono

  41. Alfonso dice:

    hola! gracias por tus aportes. seguramente a muchos les va a servir. saludos!

  42. me deja este mensje porfa quiero solucionarlo
    Warning: mail() [function.mail]: SMTP server response: 530 SMTP authentication is required. in C:\HostingSpaces\grachris\maquinariapesadaadcuni.com\wwwroot\contactenos.php on line 25

  43. Alfonso dice:

    Hola daniel,
    me parece que es un problema de configuración de tu servidor (windows) que no te deja usar la función mail() de php si no usas autenticación SMTP.

    con phpmailer, podés añadirle parámetros de conexión SMTP

  44. Matias dice:

    Buenos dias Alfonso recien descubro tu web y las verdad te felicito!!!
    quisiera hacerte la siguiente pregunta como puedo agregarle mas campos al formulario para poder agregar telefono ,direccion, ya que intente y pude crear los campos pero al hacerlo se envian a mi email pero con los nuevos campos vacios.

  45. Matias dice:

    Pude solucionar mi problema anterior ahora quisiera saber si alguien sabe como puedo hacer para que sean 2 los campos de adjuntos ya que necesito que mi cliente me envio 2 archivos adjuntos

  46. michael alfaro dice:

    hola alfonso, me gustaria saber si me puede ayudar en algo, sabe tengo una pagina web, pero me pidieron que le agregara la opcion de adjuntar y poder subir el archivos, pero todo esto sin la necesidad de un formulario, quizas tener el campo del mail y el attach del archivo, como podria hacerlo

  47. Jorge Mirón dice:

    Hola Alonso y a todos:
    Por favor me urge si alguien me puede apoyar “estoy desesperado” necesito que en este formulario aparezca mientras esta el proceso de envío de archivos un mensaje de “Enviando archivos… espere” para que mis clientes no cierren el explorador si alguien sabe el script por favor dígame en cuanto me sale o como le puedo hacer ME URGE, gracias por su atención mi correo es visioncreativapub@hotmail.com para más referencia, gracias Jorge.

  48. Paula dice:

    Hola Alfonso, muchas gracias por compartir gratuitamente este script, me ha salvado la vida varias veces!
    Mi pregunta es cómo puedo hacer para que, una vez enviado, cuando aparece el mensaje de confirmación, no desaparezca el formulario sino que siga disponible en caso que quieran volver a escribir.
    Desde ya muchas gracias!

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>