[ View menu ]
15 Oct 07

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.

Categorías: PHP.

77 Comentarios

Escribir Comentario - TrackBack - RSS Comentarios

  1. Dijo David Alexander Arce:

    Amigo… no se que decirte, solo que eres un master !! Por mucho tiempo busque un formulario como este y al fin lo encontre.
    Todo funciona a la perfección, ya lo he montado y probado en mi sitio y funciona excelente, te felicito y te agradezco mucho por esta aportación tan importante.

    Talves más adelante nos enseñas a crear ese verificador de código para evitar que robots automáticos envien spam. (ese que tu llamas “humano?”) por cierto muy original.

    Saludos,

    17 Octubre 2007 @ 14:56
  2. Dijo javier:

    Buenas, te estoy agradecido por este ejemplo pero….necesito autenticar el smtp(una de las propiedades de phpmailer) y me es imposible.
    Tienes alguna solución para usar este mismo ejemplo phpmailer autenticando smtp.
    Gracias

    29 Octubre 2007 @ 5:45
  3. Dijo Alfonso:

    hola Javier,
    si, para autenticar SMTP, tenes que agregarle al script las siguentes lineas:

    $mail->SMTPAuth = “true”;
    $mail->Host = “mail.youdomain.com”; //Your SMTP mail server
    $mail->Username = “User”; //
    $mail->Password = “Pwd”;

    las podes poner despues de la linea 40.
    avisame si te funciona. Un saludo!

    29 Octubre 2007 @ 17:45
  4. Dijo Christian:

    Hola, como se puede hacer para agregarle mas campos al formulario?

    7 Noviembre 2007 @ 13:08
  5. Dijo Christian:

    En realidad lo que necesito es poder agregar otro upload de archivo mas , gracias!! sos un genio!

    7 Noviembre 2007 @ 13:57
  6. Dijo carlos varas:

    recien acabo de encontrar esta pagina y la busque por dias y dias, espero que me ayude a mi problema, ya que hice mas de dies formularios de envios en php pero no consigo que lleguen ni siquiera a un lugar de la pagina, y como veo creo que va a resultar.

    gracias y estare respondiendo y felicitando si funciona otro dia.

    14 Noviembre 2007 @ 21:58
  7. Dijo Manuel:

    Funciona de maravilla, pero quisiera que adjuntar archivos sea un opcional y no requerido, si me echas una mano, gracisa de antemano.

    25 Noviembre 2007 @ 22:17
  8. Dijo javier:

    Hola, tengo una duda sobre el formulario. ¿Como hago apra que la opcion de adjuntar un archivo, sea opcional?

    Gracias

    28 Noviembre 2007 @ 13:14
  9. Dijo Joan:

    Hola. Ante todo gracias por compartir vuestros conocimientos con los que no llegamos. He realizado este formulario y me llega a mi correo con los archivos y el comentario pero los campos de nombre y e-mail llegan siempre vacíos
    ¿Qué debo de cambiar o agregar? Por favor necesito ayuda
    Mil Gracias
    Joan

    2 Diciembre 2007 @ 8:00
  10. Dijo ignacio:

    me podria auxiliar me aparece este error
    Warning: copy(archivos/BRISA-1916033647.doc) [function.copy]: failed to open stream: No such file or directory in /home/mexiquensc/domains/mexiquenseweb.com/public_html/britosjeans/archivos/contactenos-v3.php on line 101

    al momento de enviarlo y si llega el mail, y el link de descarga pero no baja nada

    4 Diciembre 2007 @ 17:49
  11. Dijo ronaldo:

    ¿Se pueden adjuntar archivos de audio? como…?
    El formulario me funciona de maravilla el unico problema es que no se como adjuntar archivos mp3
    Gracias anticipadas

    11 Enero 2008 @ 13:00
  12. Dijo Alfonso:

    Christian:
    Para agregar otro upload de archivo mas hay que modificar el código un poco. Habría que hacer un for…each para cada uno de los campos. Lo ideal seria agregarle un “Añadir otro archivo” como tiene gmail con un poco de ajax. La próxima versión del formulario seguramente va a ser esa.

    Ignacio:
    El error “Warning: copy(archivos/BRISA-1916033647.doc) [function.copy]: failed to open stream: No such file or directory in….” puede ser por dos motivos, o no creaste la carpeta “archivos”, que tiene que acompañar al script de formulario. O la carpeta existe pero no tiene permisos de escritura (chmod 777 o 666, según el servidor)

    Joan:
    Si te llegan campos vacíos es probable que hayas modificado algo en el código. Revisalo por las dudas, o descargalo de nuevo para probarlo.

    Manuel y Javier, Ronaldo: acabo de subir una versión que no valida los campos ni la extensión del archivo. De esa forma se puede enviar cualquier formato/tramaño de archivo, y se pueden dejar campos vacíos.
    Pueden descargar la version 3.1 del formulario

    17 Enero 2008 @ 8:27
  13. Dijo ronaldo:

    Alfonso, gracias de antemano por contestarme, he probado la nueva version (V3.1)que has puesto en tu blog y cuando intento adjuntar un archivo mp3 me sale esto:

    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 9155257 bytes) in /var/www/vhost/gestiongrafica.net/home/html/paco/class.phpmailer.php on line 1111

    Un saludo y perdona mi insistencia

    18 Enero 2008 @ 12:12
  14. Dijo Alfonso:

    Hola Ronaldo, estas intentando subir un archivo muy grande? suena a que es un problema de memoria de PHP. Tenes que ampliar el limite de memoria en php.ini. Es la variable llamada “memory_limit”. Se ve que lo tenes puesto en 8mb

    18 Enero 2008 @ 12:23
  15. Dijo ronaldo:

    Efectivamente… el archivo no es muy grande unos tres megas y pico lo que pasa es que el servidor no los admite porque he probado con un archivo mas pequeño y si que me lo envia… los que pasa es que el host es de pago y no puedo tocar el php.ini pero eso es ya otra historia… solo quiero agradecerte el magnifico formulario que has puesto en la red y la atencion que me has prestado…
    Un saludo

    19 Enero 2008 @ 4:23
  16. Dijo ronaldo:

    Hola Alfonso, sou el pesado de Ronaldo…
    al final resulta que mi correo no admite tanto tamaño pero sin embargo si que me sube los archivos de sonido a la carpeta “archivos” mi pregunta es la siguiente..
    ¿es posible que en vez de que te lleguen los archivos al correo te llegue un aviso (o link) de que te han subido los archivos?
    Gracias anticipadas

    31 Enero 2008 @ 9:47
  17. Dijo Alfonso:

    Hola Ronaldo! como andas?
    nada de pesado, todo bien che.

    Podes probar la version 2 del formulario:
    http://www.alfonsocatron.com.ar/2007/08/26/formulario-de-contacto-php-gratis-v2-permitir-al-usuario-enviar-un-archivo/

    Esa version sube el archivo al server y solo pone en el mail un link para descarga, tal vez te sirve.
    Avisame si te sirve

    1 Febrero 2008 @ 10:16
  18. Dijo gohan:

    muchisimas gracias por publicar este script, me funciono a la perfeccion para el envio de imagenes adjuntas, ahora tengo un problema y es que llegan los adjuntos pero no llegan los datos, me gustaria saber si me puedes colaborar con al parte del script en donde le agrego ciertas lineas para que me lleguen todos los campos que se llenan, el formulario en cuestion es el siguiente: http://www.conexionesdenegocios.com/prueba/afiliaciones02.php, de ante mano agradezco la colaboracion y espero respuesta.

    1 Febrero 2008 @ 11:43
  19. Dijo gohan:

    psdt. y la forma en que se genera que no se corra la pagina cuando sale la pagina de agradecimiento por enviar el formulario. gracias

    1 Febrero 2008 @ 11:46
  20. Dijo gohan:

    que pena tanta molestia, bueno despues de andar dandole al codigo, ya logre que no se me descuadrara del sitio cuando sale la parte de agradecimiento, pero de todas formas todavia no me salen los otros datos del formulario en el correo que llega, muchas gracias y espero respuesta

    1 Febrero 2008 @ 12:28
  21. Dijo Alfonso:

    hola gohan, ese formulario esta muy modificado, estas levantando por POST todos los campos que agregaste?

    1 Febrero 2008 @ 12:35
  22. Dijo ronaldo:

    Alfonso eres un genio… con la version v3 no me dejaba enviar los archivos a mi correo por falta de memoria (ya te lo comente) y con esta version si que puedo hacerlo… además estaba en un apuro y tu me los has solucionado.. darte las gracias es poco…
    un abrazo y sigue asi

    1 Febrero 2008 @ 13:40
  23. Dijo gohan:

    aca es donde toca marcar las variables que van a llegar y cero que ahi es donde esta el error, lo e buscado por todo lado y probando varias cosas y no lo hallo quizas vos me puedas hacer el favor de comentarme cual es el error, de antemano un agradecimiento infinito y espero respuesta.

    //armamos el html
    $contenido = ”;
    $contenido .= ‘Formulario de afiliacion Conexiones de Negocios’;
    $contenido .= ‘Enviado el ‘.date(”d M Y”).”;
    $contenido .= ”;
    $contenido .= ‘Ciudad:’.$ciudad.”;
    $contenido .= ‘Nombre:’.$_POST['email']”;
    $contenido .= ‘Email:’.$email.”;
    $contenido .= ‘Archivo: ‘.$nuevonombre.’ (formato:’.$ext.’ - ‘.$tamano.’ bytes)‘;
    $contenido .= ‘Nit:’.$Nit.”;
    $contenido .= ”;
    $contenido .= ”;

    1 Febrero 2008 @ 13:50
  24. Dijo gohan:

    vieras que ahorita mirando me doy cuenta de que llega la imagen y el nombre pero tampoco llega ni la extension ni el tamaño :S:S:S:S creo que debe ser algo del post que vos dices, si algo adjunto el coodigo de nuevo y pos espero me puedas colaborar gracias.
    //armamos el html
    $contenido = ”;
    $contenido .= ‘Formulario de afiliacion Conexiones de Negocios’;
    $contenido .= ‘Enviado el ‘.date(”d M Y”).”;
    $contenido .= ”;
    $contenido .= ‘Fecha:’.$fecha.”;
    $contenido .= ‘Ciudad:’.$ciudad.”;
    $contenido .= ‘Nombre:’.$nombre.”;
    $contenido .= ‘Nit:’.$nit.”;
    $contenido .= ‘Email:’.$email.”;
    $contenido .= ‘Archivo: ‘.$nuevonombre.’ (formato:’.$ext.’ - ‘.$tamano.’ bytes)‘;
    $contenido .= ”;
    $contenido .= ”;

    1 Febrero 2008 @ 14:12
  25. Dijo gohan:

    :D:D:D muchisimas gracias por el ejemplo ya lo solucione muy vacana la asesoria espero seguir en contacto. un fraternal abrazo. :D:D :D

    1 Febrero 2008 @ 16:15
  26. Dijo Francisco:

    Estimado amigo, gracias por este gran aporte al mundo. Hoy por hoy, solo existe el afan de lucro en todo.
    No soy experto, pues mi area son las leyes, pero estoy tratando de construir una pequeña web de mis servicios profesionales. El reporte que tengo es que el formulario en el navegador firefox, en el campo que se refiere a comentario se escribe en una linea recta al infinito y no en lineas a renglon aparte como si lo hace en el Internet explorer. Si esto solo esto ocurre en mi maquina, disculpe la impertinencia.

    Otra inquietud, no puede diseñarse un formulario mediante el cual se pueda enviar un archivo adjunto como opción y también se pueda validar los campos como la version 3?

    Puede incorporar la validación que tiene en este formulario que se refiere a “Humano”?

    GRACIAS POR TODO…..

    8 Febrero 2008 @ 20:16
  27. Dijo alcazar:

    Muchisimas gracias por tu aportación, llevaba varios días dándole vueltas hasta que he encontrado tu página con tu maravilloso formulario.

    12 Febrero 2008 @ 3:38
  28. Dijo Fernando:

    Alfonso hay alguna forma de que lo envie direcctamente al mail que uno expecifica, sin querer copiarlo al servidor.???
    1ro porque el servidor no me deja copiarlo a la carpeta archivo
    2do porque si me llegan los datos al correo destino, hasta nombre completo del archivo adjuntado, pero NO lo adjunta!! 0 bytes!
    Me gustaria no copiar al servidor los archivos adjuntados, que lineas tendria que modificar sin perder el formulario!
    please help

    13 Febrero 2008 @ 0:58
  29. Dijo Alfonso:

    gohan y alcazar: me alegro que les haya servido!

    Francisco: gracias por el reporte. Lo estuve testeando en firefox mac y pc, pero no veo lo que me decis. Solo aparece la barra horizontal cuando se escribe una cadena de caracteres larga y sin espacios, pero eso es normal. ¿en que version de firefox lo estas usando?
    Respecto a tus otras dos preguntas: si, se pueden hacer ambas cosas.
    Para que adjuntar sea opcional, tenes que cambiar la linea 92:
    if ($_POST['email']!=” && $_POST['nombre']!=” && $_POST['comentario']!=” && $error_archivo==”) {

    por:
    if ($_POST['email']!=” && $_POST['nombre']!=” && $_POST['comentario']!=”) {

    Respecto a la validacion, si, se puede hacer, pero ya escapa la intencion de este formulario :)

    Fernando: ¿por que no lo sube al server? ¿tenes problemas de permisos en las carpetas? Si se puede evitar copiar los archivos al servidor. tenes que comentar la linea 93:
    copy($_FILES['archivo']['tmp_name'],’archivos/’.$nuevonombre);

    y tenes que cambiar la linea 110:
    $mail->AddAttachment(’archivos/’.$nuevonombre.”, $nuevonombre); // optional name

    por:
    $mail->AddAttachment($_FILES['archivo']['tmp_name'], $nuevonombre); // optional name

    De todas maneras, tu servidor tiene que permitir la carga de archivos con PHP, yo revisaria eso primero.

    un saludo.

    13 Febrero 2008 @ 8:26
  30. Dijo Rodolfo:

    hola alfonso :) , por lo leido en esta página podrias ayudarme muchisimo.
    Mira, actualmente desarrollo un pequeño sistema para una empresa de mi ciudad y en la aplicacion me piden, en otras cosa, enviar los datos de un formulario con solicitudes a una BD y paralelamente deberia llegar un email al o los responsables de las solicitudes.
    mi problema es el siguiente, el correo es interno, su SMTP 100.1.0.8, el dominio: cotel.bo, y cuando intente mandar correo con la funcion mail(), me daba mensajes de error como que no reconocia el dominio cotel.bo.
    Cabe mencionar que la alpicacion esta instalada en mi equipo y deseo hacer pruebas mandandome email a mi correo interno que en mi caso es rodolfo.ramirez@cotel.bo
    Soy principiante en esto del mundo PHP y lo poco que se y aplico es producto de haber leido tutoriales y manuales por lo tanto hay conceptos basicos que aun no me los conozco a la perfeccion, como por ejemplo: “Luego deben crear una carpeta llamada “archivos”, y asignarle CHMOD 777″.
    Espero me puedas ayudar…un abrazo.

    21 Febrero 2008 @ 10:18
  31. Dijo Rodolfo:

    PD: Cuando es necesario autenticar el SMTP ???

    21 Febrero 2008 @ 10:43
  32. Dijo criet:

    gracias amigo por la ayuda lo he colocado y me sale un error en la parte de copy($_FILES['archivo']['tmp_name'],’archivos/’.$nuevonombre);

    si a esto le coloco comentario si corre pero no envia a mi correo
    nuze cual sera el problema pues yo quiero que se envie a mi correo y nop envia necesariamente tiene que ser un correo gmail o tambien puede ser en hotmail ……….. Haver si me dan una ayudita que aun soy novato en esto.

    7 Marzo 2008 @ 20:32
  33. Dijo Lautaro:

    muy bueno el posteo, lo coloq, me figura q envio el formulario como ok, me sube el archivo en la carpeta archivos, pero no me envia el mail con el texto completado, la verdad que tmb estoy en un aprieto, y necesito el adjuntar, muchas gracias, muy bueno el posteo, si me podrias solucionar esto no se como podria agradecertelo, ya q seria muy importante para mi, gracias desde ya

    28 Marzo 2008 @ 14:25
  34. Dijo nata:

    hola, miren, he insertado el cuestionario y todo bien, pero tengo una enorme duda, no sé lo que es el chmod 777, o más bien, no logro saber como dar ese permiso pues una vez que tengo la carpeta en el servidor me dice que no puede cambiar los permisos.
    un saludos y muchas gracias (espero contestación)

    28 Abril 2008 @ 5:24
  35. Dijo Carlos:

    HOla amigo, este formulario corre excelente, solo tengo una duda, como puedo hacer para que los datos lleguen a 2 cuentas de correo? Es decir como esta este me corre de maravilla, pero necesito que los datos los reciban en 2 cuentas distinas. Gracias de antemano. Me has ayudado muchisimo

    7 Mayo 2008 @ 22:53
  36. Dijo elo:

    muy weno el form de contacto agradecido

    20 Mayo 2008 @ 13:04
  37. Dijo José Ricardo Rojas Castro:

    Muchas gracias por el código php, me funciona excelente.

    Ricardo Rojas.

    10 Junio 2008 @ 20:58
  38. Dijo Hola alfonso:

    Como se puede hacer para que el formulario tome los datos de un boton radial y de los que elegis el pais de procedencia del loco para que llegue al correo el pais que eligio en loco?

    12 Junio 2008 @ 13:31
  39. Dijo Angel Medina Palomares:

    Hola, excelente informacion, habia estado trabajando con la opcion mail() a la perfeccion pero me surgio la necesidad de adaptar el formulario para que tambien adjunten archivos, bueno e probado las recomendaciones que das recibo el correo con todos los datos que llenas en el formulario, pero no me llega el adjunto, en el formulario me llega algo asi como una liga, bueno en torno a esto tengo una duda los correos que adjuntas te llegan igual que usando un cliente de correo normal o definitivamente los tienes que descargar del servidor como se propone un la version 3.1, por cierto apenas empiezo a manejar php asi que algunas cosas las desconozco gracias por excelenete publicasión.

    13 Junio 2008 @ 16:31
  40. Dijo José Ricardo Rojas Castro:

    El formulario me funciona al 100%, solamente que me llega una imagen al mi E-mail y necesito que me lleguen las 5. ¿Cómo hago?

    Echén un vistazo a ver que le falta:

    http://www.fullextras1.com/ejemplos/form-adjunto/contactenos-v3.php

    Gracias.

    Ricardo Rojas

    16 Junio 2008 @ 21:34
  41. Dijo José Ricardo Rojas Castro:

    Amigos, el CHMOD 777 yo lo modifique entrando al Cpanel de mi página web, encima de la carpeta Archivos clic derecho y clic en Modificar permisos, aparece una cajita con unos números Ej: 674, los borras y digitas 777. Lo que hace el número 777 es darle full permisos a la carpeta. Otra sería segun su Cpanel que al final de la línea, o sea; en la parte derecha de su monitor están los números Ej: 674, encima de estos números doble clic y le colocas 777 y enter. Suerte!!!!

    Ricardo Rojas Castro
    http://www.oficinacreativa.com
    Palmares, Alajuela. Costa Rica.

    16 Junio 2008 @ 21:41
  42. Dijo Diego Alvarez:

    Flaco sos un verdadero genio. No te das una idea del tiempo que hisiste ahorrar. Pude fucionar el codigo tuyo, en un formulario que estaba utilizando y funciona a la perfeccion. Gracias por compartir tus conocimientos. Un abrazo

    30 Mayo 2009 @ 15:36
  43. Dijo hernan:

    hola, la verdad que agradezco tu buena onda para acercarnos a aeste material tan valioso!!! te comento cual es mi problema. pasa que probe el formuario en mi host y me sube los archivos al hosting sin problema pero no me llega a mi email… me contacte con el coporte de mi hosting y me respondieron esto:

    debe tener en cuenta que en nuestro archivo de configuracion php.ini, no se encuentra definida la variable sendmail_from y por lo tanto debera setearla antes de realizar el envio.
    Esto puede realizarce colocando la funcion
    ini_set("sendmail_from", "email@midominio");
    en la linea previa a la funcion mail()
    REcuerde que email@midominio debe ser reemplazado por una cuenta de correos existente en su panel de control.

    el tema que no puedo encontrar la funcion mail() perdon si esto es molestia.. pero agradecería tu ayuda.. un abrazo..
    hernán

    1 Junio 2009 @ 8:36
  44. Dijo hernan:

    lstoooo lo solucione,, jeje pero ahora el problemita es que me llega el contenido del mensaje vacio y no me adjunta la imagen al email..

    1 Junio 2009 @ 8:49
  45. Dijo Macelo:

    Gracias por brindarnos este material
    Funciona perfecto,
    ahora si seria tan amable presiso saber como hacer para que el
    formulario llenado po un visitante, a la hora de enviarlo llegue a distintos mail, previamente configurados en el php y no solo a uno.
    desde ya si me puedes ayudar muchas gracias

    2 Junio 2009 @ 11:58
  46. Dijo Richard Macias:

    Que bacan, me han servido super bien los felicito, soy de Ecuador, y usted es un mater compa

    10 Julio 2009 @ 14:29
  47. Dijo Luis:

    Hola, muchas gracias por este aporte, me funciono exelente. Aqui te lo dejo modificado para que adjuntar un archivo sea opcional. Funciona al 100%, ya luego lo dejo para validar el mail. Saludos

    From = $_POST['email'];
    $mail->FromName = $_POST['nombre'];
    $mail->AddAddress($direccion_envio);
    $mail->Subject = “Contacto desde Mi Portal Escolar”;
    $mail->AddReplyTo($_POST['email'],$_POST['nombre']);
    $mail->IsHTML(true);
    $comentario=$_POST['comentario'];

    //comprobamos si se adjunto un archivo, y si su tamano es menor al permitido

    if (!(empty($_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 “image/gif”:
    $ext=”gif”;
    break;
    case “image/pjpeg”:
    $ext=”jpg”;
    break;
    case “image/jpeg”:
    $ext=”jpg”;
    break;
    case “image/bmp”:
    $ext=”bmp”;
    break;
    case “application/zip”:
    $ext=”zip”;
    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;
    }

    $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 es valido.”;
    }
    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 ($_POST['email']!=” && $_POST['nombre']!=” && $_POST['comentario']!=” && $error_archivo==” || empty($_FILES['archivo']['tmp_name']))
    {
    // copiamos el archivo en el servidor
    copy($_FILES['archivo']['tmp_name'],’archivos/’.$nuevonombre);

    //armamos el html
    $contenido = ”;
    $contenido .= ‘Contacto desde formulario’;
    $contenido .= ‘Enviado el ‘. date(”d M Y”).”;
    $contenido .= ”;
    $contenido .= ‘Nombre: ‘.$nombre.’‘;
    $contenido .= ‘Email: ‘.$email.’‘;
    $contenido .= ‘Archivo: ‘.$nuevonombre.’ (formato:’.$ext.’ - ‘.$tamano.’ bytes)‘;
    $contenido .= ‘Comentario: ‘.$comentario.’‘;
    $contenido .= ”;
    $contenido .= ”;

    $mail->Body = $contenido;
    $mail->AddAttachment(’archivos/’.$nuevonombre.”, $nuevonombre); // optional name
    // si todos los campos fueron completados enviamos el mail

    $mail->Send();
    $flag=’ok’;
    $mensaje=’Su archivo ha sido adjuntado con éxito Gracias por Contactarnos’;
    }
    else
    {
    //si no todos los campos fueron completados se frena el envio y avisamos al usuario
    $flag=’err’;
    $mensaje=’- Los Campos Marcados Con * Son Requeridos. ‘.$error_archivo.”;
    }
    }
    ?>

    Como ven solo se cambia la funcion isset() por la funcion empty(); isset envia un verdadero si la variable no tiene valor, por eso si no se adjunta archivo entra a la condicion para revisar el tipo de archivo y como no hay nada marca error; la funcion empty() regresa un verdadero si la variable no tiene valor, por eso es que uso la negacion en el if y evitar que entre a la condicion.

    5 Agosto 2009 @ 14:09
  48. Dijo raul cuti:

    la verdad no me llega nada a mi correo, sera por que solo he cambiado el destino o tambien se cambia la URL, ayudenme por favor

    11 Agosto 2009 @ 9:21
  49. Dijo carlos alirio:

    deseo me ayuden con un video tutorial sobre programacion y codigo pues soy muy nuevo en esto y deseo aprender algo de programacion
    y un poco de codigo basico para entender pues los resultados son realmente maravillosos

    mil gracias a todos los master en programacion cualquier ayuda estare muy agradecido hasta una nueva oportunidad

    12 Agosto 2009 @ 7:51
  50. Dijo diego:

    Muchisimas gracias por este material, te lo agradezco mucho.
    Pero tengo un problema…. los campos nombre email me llegan sin informacion el resto bien. cual es la solucion definitiva para ello baje la version 3.1.

    MUCHÍSIMAS GRACIAS

    16 Agosto 2009 @ 16:58
  51. Dijo Luis:

    Hola diego

    Mira a mi me paso lo mismo con otra pagina, usando ese mismo formulario me llegaban los campos de E-mail, Nombre y demas vacios, aunque si me llegaba el formato del mensaje.

    Investigando y probando en otros servidores, me di cuenta de que los permisos que tenia en la carpeta desde donde llamo al formulario no se modificaban. Hable con mi proveedor, me arreglo ese detalle y el formulario funciona bien. Quiza por ahi podrias encontrar la solucion.

    18 Agosto 2009 @ 17:39
  52. Dijo Alfonso:

    gracias por los comentarios!
    estuve revisando los formularios y arregle un bug que hacia perder el nombre y email en el cuerpo del mensaje.

    estan actualizados los archivos de descarga con los arrelgos.

    saludos!

    18 Agosto 2009 @ 18:43
  53. Dijo abraham:

    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, Y SE CREO LA CARPETA ARCHIVOS

    que podra estar mal?????

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

    3 Septiembre 2009 @ 14:35
  54. Dijo Natalia:

    Hola que tal buenas tardes esta excelente el formulario, pero una consulta necesito agregar tres campos mas, me podria ayudar en donde tengo que hacer los cambios yo agregue pero me sale error al momento de enviar, espero que ustedes me puedan ayudar muchas gracias estare a la espera. saludos

    19 Septiembre 2009 @ 18:03
  55. Dijo juan:

    hola la verdad que soso muy amable en compartir tus conocimientos::: me alegra ver gente como vos…
    Solamente gracias.. te tengo de ejemplo CAPO

    29 Septiembre 2009 @ 2:57
  56. Dijo David Castillo:

    Señor, es usted un Dios, muchisimas gracias por este aporte, me haz salvado de una gigante, si tienes una cuenta de paypal para hacerte un aporte simbolico me sentiria muy bien.

    Muchisimas gracias, eres grande!!!!

    24 Noviembre 2009 @ 15:53
  57. Dijo ivan:

    hola…oye

    como va el directorio

    contactenos-v3.php eso afuera

    dentro de carpeta CHMOD 777
    junto con carpeta archivos y meter las otras cosas

    29 Noviembre 2009 @ 2:06
  58. Dijo Jose:

    excelente! me sirve para nformar pagos :)

    saludos

    23 Enero 2010 @ 14:20
  59. Dijo OLber:

    Hola muy buen aporte. Me adjunta la imagen y la envia al servidor. Pero por mail no me llega. Gracias.

    25 Enero 2010 @ 20:24
  60. Dijo Hugo:

    Hola que tal, como puedo modificar el archivo para un servidor pop3???
    SALUDOS.

    10 Febrero 2010 @ 1:26
  61. Dijo ces:

    nada

    22 Febrero 2010 @ 14:44
  62. Dijo Hector:

    Te agradezco mucho tus aportes…sin embargo soy nuevo en esto, y claro, al usar copiar y pegar no me funciono.

    Te molestaria ayudarme?

    La idea es colocar por ejemplo en el cpanel del Sitio, en public_html una carpeta llamada archivos y dentro de ella los “class.smtp.php” y “class.phpmailer.php”??? no entendi bien….hice las modificaciones del correo electronico para que me llegara de prueba y nada.

    Ademas cambie (en un segundo intento) el nombre de usuario y host del codigo que tu nos brindaste, por los de acceso del cpanel de mi sitio…

    Estoy muy enredado y pido disculpas por la falta de conocimiento, pero agradeceria infinitamente tu ayuda

    mi mail por siacaso thekinghectorsalive@gmail.com

    26 Febrero 2010 @ 15:51
  63. Dijo luis covarrubias:

    Gracias! es muy útil, pero tengo una pregunta, como puede agregar a una pagina ya hecha tu formulario? es decir, insertarlo en alguna parte de la pagina? espero no ser molesto
    gracias!

    26 Febrero 2010 @ 23:17
  64. Dijo javier:

    Muchas gracias por el formulario, tengo dos dudillas

    si envio un zip al formulario al clickear el link me abre una pagina en blanco buscando la aplicacion, como podria elimiarno

    y mi segunda prpegunta es como puedo enviar un mensaje a la dirección de correo que has enviado con un mensaje.. gracias por enviar el formulario, en breve nos pondremos en contacto con usted, muchas gracias.

    GRACIAS

    25 Marzo 2010 @ 9:52
  65. Dijo Pablo Leyes:

    Hola Alfonso:
    estoy tratando de bajar el formulario de contacto y te adelanto que soy nuevo en esto, quisiera saber como hago para asignarle CHMOD777 a la carpeta “Archivos”. Muchas gracias.

    6 Abril 2010 @ 5:56
  66. Dijo jimmy gracia osorio:

    jjjjjj

    8 Abril 2010 @ 18:15
  67. Dijo Daniel:

    Puedes cambiar los permisos de la carpeta “archivos” desde tu programa FTP, (yo uso FileZilla) seleccionando “permisos del archivo…” del menú contextual al darle clic alterno sobre la carpeta.

    Si no usas FileZilla, puedes cambiarlos directamente desde el navegador de archivos de tu cpanel.

    Espero haberte aclarado algo.

    Acabao de descargar el formulario, voy a probarlo pero a juzgar por los comentarios parece que funciona muy bien.

    8 Abril 2010 @ 20:06
  68. Dijo MARIAC:

    Hola: tengo un sitio construido con ferozo, el mismo esta alojado en Dattatec, a pesar de la mala prensa que tiene, el servicio funciona muy bien ,lo que es muy deficiente es el soporte tecnico, jamas te solucionan una consulta. Mi sitio es de propiedades en alquiler, por ahora estoy utilizando el formulario tradicional, este me llega a mi y yo lo reenvio al propietario correspondiente. Lo ideal seria poner en cada propiedad un formulario para que sea directamente enviado al propietario . Se que puede hacerse con PHP, pero no he tenido exito con los intentos. desde ya muchas gracias por tu atencion.

    27 Abril 2010 @ 9:46
  69. Dijo raul:

    Ya me funciono , solo deseo saber como le hago en mi codigo php para que una vez que se haya enviado me direccione a la pagina de inicio de contacto , les voy agradecer mucho y donde lo acomodo.
    Saludos.

    18 Mayo 2010 @ 14:01
  70. Dijo Alejandro:

    Hola esta muy bueno tu formulario, pero quisiera saber si me puedes ayudar para combinar la opcion de adjuntar archivo a un formulario que ya estoy usando, el cual me funciona bien pero quisiera permitir que mis clientes me envien un archivo adjunto. Muchas gracias…

    Mi codigo PHP es:

    22 Mayo 2010 @ 13:53
  71. Dijo Orlando Riaño:

    Muchas gracias por este código, no soy diseñador web, soy escritor y quería adicionar un formulario sencillopara una página y funcionó a las maravillas. Muchas gracias, estoy agradecido. En lo que requiera de escritura o corrección de estilo estoy a la orden, ha sido fantástico encontrar personas como usted que disfrutan por transmitir el conocimiento. Muchas gracias.

    9 Junio 2010 @ 12:24
  72. Dijo lolo:

    muy bien por el codigo nada mas que no e podido usarlo porque me aparece esto:

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request

    soy muy novato pero no se que me falto :(

    1 Julio 2010 @ 23:46
  73. Dijo Erika Mendoza:

    Alfonso, no sabes lo mucho que te agradezco por proporcionarnos tan maravilloso código, me he pasado todo el dia desde las 9:00 am hasta que finalmente di con el y me ha funcionado maravillosamente, muchisimas gracias.

    12 Julio 2010 @ 19:40
  74. Dijo jose_arg:

    hola amigo tengo problemas para poder crear una biblioteca virtual. en la que tengo que dar al usuario una opsion para poder subir los libros a una nueva pag. y mostrarlos en hotra todos los libros que tengo dentro del formulario

    13 Julio 2010 @ 16:33
  75. Dijo jose_arg:

    mi correo personal es jose-arg1989@hotmail.com

    13 Julio 2010 @ 16:34
  76. Dijo Paco:

    Me salvaste la vida. Eres un genio. Espero no caiga tu web esta de lujo.

    13 Julio 2010 @ 22:51
  77. Dijo joga:

    Queria saber si me puedes ayudar en lo q es agregar una auto respuesta para el formulario, es decir q le llege a la persona q llena el formulario un correo indicando q pronto me comunicare con el.

    Gracias

    24 Julio 2010 @ 0:23

Escribir comentario