Enviar y/o subir multiples archivos adjuntos al estilo GMail

Como el título dice, este es un pequeño script que permite enviar y/o subir multiples archivos al estilo de GMail, éste script utiliza PHP como lenguaje del lado del servidor, javascript para crear nuevos elementos HTML en la página y para el envío del mail se utiliza PHP Mailer que permite adjuntar archivos de una manera muy sencilla.

Primero se definen los elementos necesarios para poder enviar el mail

html:
<form name="frm" id="frm" action="" method="post" enctype="multipart/form-data">
        <dl>
                <dt><label for="to" accesskey="1">Para</label></dt>
                <dd><input type="text" name="to" id="to" size="60" /></dd>
               
                <dt><label for="from" accesskey="2">De</label></dt>
                <dd><input type="text" name="from" id="from" size="60" /></dd>
               
                <dt><label for="sbj" accesskey="3">Asunto</label></dt>
                <dd><input type="text" name="sbj" id="sbj" size="60" /></dd>
               
                <dt><label for="msg" accesskey="4">Mensaje</label></dt>
                <dd><textarea id="msg" name="msg" rows="7" cols="45"></textarea></dd>
               
                <dt><label>Archivos Adjuntos:</label>   <a href="#" onclick="addField()" accesskey="5">Añadir Archivo</a></dt>
                <dd><div id="files"></div></dd>
                <dd><input type="submit" value="Enviar" id="postback" name="postback" accesskey="6" /></dd>
   </dl>
</form>

La siguiente porción de código javascript, permite agregar y quitar elementos de tipo <input type=file> de manera dinámica, esta es una de las razones del título del artículo ;)

javascript:
<script type="text/javascript">
var numero = 0;

// Funciones comunes
c= function (tag) { // Crea un elemento
   return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
   return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
   return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
   return evt.srcElement ?  evt.srcElement : evt.target;
}

addField = function () {
   container = d('files');
   
   span = c('SPAN');
   span.className = 'file';
   span.id = 'file' + (++numero);

   field = c('INPUT');   
   field.name = 'archivos[]';
   field.type = 'file';
   
   a = c('A');
   a.name = span.id;
   a.href = '#';
   a.onclick = removeField;
   a.innerHTML = 'Quitar';

   span.appendChild(field);
   span.appendChild(a);
   container.appendChild(span);
}
removeField = function (evt) {
   lnk = f(e(evt));
   span = d(lnk.name);
   span.parentNode.removeChild(span);
}
</script>

Finalmente viene el código del lado del servidor, que maneja los datos enviados a través del formulario y hace el respectivo envío del mail a la dirección indicada

php:
<?php
        include_once('class.phpmailer.php');
        // Indica si los datos provienen del formulario
        $postback=isset($_POST['postback']) ? true : false;
       
        if ($postback) {
                extract($_POST);
                $mail = new phpmailer ();
                $mail -> From = $from;
                $mail -> FromName = "BuayaCorp"; # Puede obtenerse del formulario, por facilidad se hace de esta manera
                $mail -> AddAddress ($to);
                $mail -> Subject = $sbj;
                $mail -> Body = $msg;
                $mail -> IsHTML (true);
                $archivos = '';
                $msg = "Mensaje Enviado";
               
                if (isset ($_FILES["archivos"])) {
                        $msg .= "<ul>";
                        foreach ($_FILES["archivos"]["error"] as $key => $error) {
                                if ($error == UPLOAD_ERR_OK) {
                                        $tmp_name = $_FILES["archivos"]["tmp_name"][$key];
                                        $name = $_FILES["archivos"]["name"][$key];
                                        $msg .= "<li>$name</li>";
                                        $name = uniqid('bc') . '_' . $name; # Generar un nombre �nico para el archivo
                                        $mail -> AddAttachment ($tmp_name, $name);
                                        /*
                                        Si se van a guardar los archivos en un directorio, deber�an descomentarse
                                        las siguientes l�neas, si se van a guardar los nombres
                                        de los archivos en una base de datos, aqu� deber�a realizarse algo...                                   
                                        
                                        move_uploaded_file($tmp_name, "ruta/directorio/$name"); # Guardar el archivo en una ubicaci�n, debe tener los permisos necesarios
                                        */

                                } #if
                     } # foreach
                        $msg .= '</ul>';
                } # if
                if (!$mail -> Send ()){
                        $msg = "No se pudo enviar el email";
                }
        }
?>

Dependiendo de las necesidades que cada uno de ustedes pueda tener, este script puede modificarse con suma facilidad y asi conseguir el objetivo deseado

Archivos Relacionados

  • Pueden descargar el ejemplo o verlo en funcionamiento aquí

236 thoughts on “Enviar y/o subir multiples archivos adjuntos al estilo GMail”

  1. Hola, qué es lo que realmente quieres hacer?.
    Ví tu página de contacto y al parecer todo funciona bien

    Saludos

  2. Logre que envie el mailo y guarde el adjunto en una carpeta dentro de mi servidor, pero el adjunto se queda ahi no me llega a la direccion de mail. ¿tengo que configurar algo mas? Saludos.

  3. Te agrego mas datos, no trabajo de forma local siempre de forma remota, me llega el mail pero no el adjunto, el adjunto queda en la carpeta que defini con permisos 777 pero no me lo envia a mi correo.

  4. No veo porque sea el problema, el ejemplo que puse en ésta página envía los archivos adjuntos sin problemas, probablemente no estés asignando bien la ruta de los archivos, intenta depurar el script, talvez te pueda servir el atributo $mailer -> ErrorInfo del phpmailer, tambien deberías agregar una dirección a donde responder $mail -> AddReplyTo('foo@bar.com', 'Bug Reports');, escoger el método de transporte smtp $mail -> Mailer = "smtp";, etc.

    No se me ocurre que más sugerirte...

    Saludos

  5. Hola, me parce bien tu articulo, no se si me puedas ayudar, yo tngo instalado php y al correr tu aplicación y al enviar un archivo en mi pc me dice

    :que Warning: Failed opening 'class.phpmailer.php' for inclusion (include_path='.;c:\php4\pear') in c:\foxserv\www\correo.php on line 72

    Fatal error: Cannot instantiate non-existent class: phpmailer in c:\foxserv\www\correo.php on line 78

    no se si me puedes ayudar a resolver este problema gracias

  6. Que tal... Oye probe el ejemplo en mi maquina pero no envia, tengo instalado el PHP y el dreamweaver y tengo win2000 server... necesito tener instalado algun servidor de correo o algo referente para que se pueda enviar?... Si me pueden ayudar por favor.....

  7. Necesitas un servidor de correo, hasta donde sé en Windows 2000 trae un servidor SMTP como parte del IIS, configúralo bien para que te permita hacer relaying, ahora también puedes usar otro servidor SMTP, no necesariamente en tu máquina (eso gracias al phpmailer)

    Saludos

  8. Mira tu ejemplo me parece my bueno pero a la ora de correrlo en mi maquina me sale que no se pudo enviar el archivo no se si me podrias decir a que se deve o si se deven configurar algunois de los archivos .

  9. Te ayudaría con todo gusto, si pusieras más detalles sobre el error que te manda, no soy adivino...

    Saludos

  10. hola, mi problema también es que no me llega el adjunto, solo el correo con el cuerpo del mail y el asunto...
    podrias ayudarme?

  11. Hola, no tengo muy claro que tipo de codigo debo usar puesto que estoy utilizando jsp's, lo que necesito es que los usuarios del portal puedan subir sus imagenes y archivos de texto a las paginas, ademas requiren que el portal cargue informacion dinamicamente...me ayudarias con eso please??, es para un proyecto del inst...
    Gracias!...saludos

  12. Buenas, para enviar por correo lo tengo claro, pero ¿sirve para enviar ficheros al servidor? Por ejemplo para que envien descargas a mi web y se suban directamente a una carpeta /descargas/

  13. Claro, como ves en el nombre del artículo dice "Enviar y/o Subir", sólo tienes que descomentar las líneas donde dice move_uploaded_file y cambias la ruta a la que quieres subir.

    Saludos

  14. Muchas gracias Braulio, tu sitio web me parece excelente, de lo mejorcito, ánimo, espero que estes tan animado en este proyecto como yo leyendolo, un saludo

  15. hola porque solo puedo subir imagenes de poco tamaño. que tendria que cambiar para que pueda adjuntar fotos de mucho mayor tamaño. bye gracias

  16. Hola, la verdad q de muchos sites q estuve investigando este informe me parecio uno de los mas intersantes. Sin embargo como a muchos a mi tampoco me funciona. He subido los 3 archivos q vienen en la descarga, estan en la misma carpeta y alli mismo el formulario con el script para los input file, pero cuando envio me sale:

    Method Not Allowed
    The requested method POST is not allowed for the URL /prom/club/subirfotos_otro.htm.
    --------------------------------
    Apache/1.3.33 Server at http://www.calle8lima.com Port 80

    Que otra cosa debo de configurar, cuando lo probe desde el link que tu pones de prueba si funciona y me llego al correo elegido, pero cuando los subi al servidor de mi cliente no funciona . Un favor si noes muy extensa la solucion dime los pasos a darse de modo explicito, no supongan q mis conocimientos ya son medios o avanzados en programacion , soy solo diseñador de webs y configuro de modo basico scripts y php ya elaborados. Bueno espero me ayudes por que lo quisiera aplicar ya. Gracias

  17. El problema que comentas es porque no le estás asignando la página que se va a encargar de procesar el formulario, el atributo action de tu formulario debe apuntar a la página donde se encuentra el script, Ej action="subir.php", ahorita tu código está así: action="".

    Saludos

  18. Gracias. La verdad q al inicio no entendí porque tampoco me fucionaba con tu indicación y viendo que tu ejemplo esta php se me ocurrio subir el archivo el que viene con la descarga : uploader.php, y al ingresar http://www.calle8lima.com/prom/club/uploader.phpaperece el formulario y asi funciono.Ocurre nunca use php como paginas sino como documento a llamar para algo. Sin me parecia extraño q en tu ejemplo el action tambien figuraba:action="". esto lo comprendi luego que viese que dentro del uploader.php ya figuraba el codigo el php. ademas del form. Por lo tanto si yo queria q mi formulario sea un htm solo debia incluir el script para añadir campos y ademas crear un php aparte con el codigo que figuraba arriba del uploader.php o simplemente colocar en action, action="uploader.php". Bueno ya funciono todo. Gracias Alex. Si me he explicado de modo tan extenso es para algunos que les ocurriese el mismo problema. ojala me hayan entendido tambien. Sólo un detalle ¿hay alguna forma de que las imagenes no lleguen renombradas? si por ejmplo el archivo se llama cd.jpg me lo renombra a bc42fb362557e72_cd.jpg y ademas me lo adjunta doble. Bueno Gracias siempre

  19. Justamente en el script aparece la siguiente línea:
    $name = uniqid('bc') . '_' . $name; # Generar un nombre único para el archivo
    Si quieres que no lo renombre, comenta o borra dicha línea, sobre el otro problema, no sé que esté sucediendo, no tengo detalles como para poder darte alguna solución.

    Saludos

  20. Buenas de nuevo a todos. He estado pensando en como diseñar el uploader.php, pues dicho fichero debe recoger los campor de mi formulario en html.

    Con eso recogemos los campos del formulario en html, excepto los ficheros adjuntos que no se como recogerlos.

    y con esto:

    Envio procesado';
    echo 'Muchas gracias..';

    ?>

    enviamos el email.

    La cuestion esta en como recoger los ficheros adjuntos en el formulario en html que se llaman file1 y file2 y como luego adjuntarlos al email.

    Que pensais al respecto de esto?

    Lo que no entiendo es el codigo:

    $archivos = '';
    $msg = "Mensaje Enviado";

    if (isset ($_FILES["archivos"])) { # Si es que se subió algún archivo
    $msg .= "";
    foreach ($_FILES["archivos"]["error"] as $key => $error) { # Iterar sobre la colección de archivos
    if ($error == UPLOAD_ERR_OK) { // Si no hay error
    $tmp_name = $_FILES["archivos"]["tmp_name"][$key];
    $name = $_FILES["archivos"]["name"][$key];
    $msg .= "$name";
    $mail -> AddAttachment ($tmp_name, $name); # Añade el archivo adjunto
    } #if
    } # foreach
    $msg .= '';
    } # if
    if (!$mail -> Send ()){
    $msg = "No se pudo enviar el email";
    }

    quizas utilizando parte de este codigo para recoger los datos adjuntados y luego añadirlos al mensaje pueda funcionar.

    Me podeis ayudar?

    En mi primer post hay errores en el codigo del fichero uploader.php, por eso se me ocurrio esto ultimo, es como he mandado otros emails utilizando codigo php en ficheros .php, pero en los que no se adjuntaban ficheros.

  21. No entiendo muy bien qué es lo que quieres hacer, puedes contactactarme a través de alex[@]buayacorp.com si deseas...

    Saludos

  22. Hola amigo ,me parecio muy bueno tu articulo pero lo q no entinedo es.. porq no funciona el ejemplo q tienes aqui? siempre dice email no se pudo enviar.. y otra pregunta, donde se coloca la direccion a la cual van a llegar todos los datos? Gracias..

  23. Pues a mi me funciona bien...; sobre tu pregunta añades los recipientes con la sentencia $mail -> AddAddress ($to);

    Saludos

  24. Hola amigo ,ya me funciona pero tengo otra pregunta y disculpa la molestia.
    Necesito colocar mas campos pero no se en donde ni como. La idea es q la gente envie algunos datos tales como nombre, apellido, teléfono, ciudad, etc ,etc y q adjunte su Curriculum. Gracias..

  25. Buenas noches, necesito que por favor me de una orientación, yo necesito que los usuarios solo puedan subir un archivo y que sea de extención .doc, .xls o jpg .
    Que debo agregar oquitar al codigo para:
    1. que solo se pueda mandar un archivo adjunto.
    2. que el archivo adjunto sea .doc, .xls, o .jpg

    Mil gracias por su colaboración.

  26. como se podra hacer para que solo se puedan sierta cantidad archivos de puedan enviar Ejemplo: que solo se puedan abrir 7 input para enviar al tratar de abrir otro salgo un mensaje.

    Muchas gracias por su ayuda :D

  27. En el script hay una variable global numero, simplemente bastaría con poner la condición necesaria al inicio de la función addField.

    Saludos

  28. Tengo una duda... cómo puedo componer la variable $msg con distintas variables, por ej. $nombre; $ direccion; $telefono; etc.
    Gracias anticipadas por la ayuda :)

  29. Hola Yiyo, la variable $msg, simplemente es para indicar si se ha enviado el mail o no, no se utiliza para otro propósito. A qué te refieres específicamente?

    Saludos

  30. Hola , felicitaciones por el script me es muy util ,
    Como hago para poner un limite de archivos adjuntos que me puedan mandar como maximo 3 ?

    Vi tu explicacion aca :
    --------------------------------------
    alex dijo:
    Setiembre 5th, 2005 at 7:19 pm
    En el script hay una variable global numero, simplemente bastaría con poner la condición necesaria al inicio de la función addField.
    ---------------------------------

    Me podrias indicar un poco mejor que no logro hacerlo ?

    Gracias
    Saludos

  31. Hola Daniel, como te dije, sólo basta poner esta condición al inicio de la función addField:
    addField = function () {
    if (numero >3 ) return false;
    container = d('files');
    ...

    Saludos

  32. La pagina funciona bien. El mail lo recibo correctamente a mi correo electrónico, pero NO RECIBO LOS ARCHIVOS ADJUNTOS QUE ENVIO....¿Donde está el problema?

    Gracias por su ayuda,

    Diego.

  33. holas...este formulario me parece muy bueno, la verdad no conozco mucho el tema pero vengo leyendo muuuuucho desde ayer, mi pregunta es, en cual de los files debo cambiar para que llegue al correo que se desea, deseo renombrar ese file uploader a contactenos, se puede?..no afecta en algo el funcionamiento?..puedo borrar algunos campos del formulario o cambiar de nombres?..no afecta en nada a los demas files?...ayudenme plz---

  34. Alex , como hago para que despues que al usuario le sale el "mensaje enviado" lo redireccione en una pagina nueva a la web que yo le indique , tiene que abrirsele en una pagina nueva la direccion que yo le indique.
    ¿Como hago ?
    Gracias

  35. Diego: El hecho de que no envíe los archivos adjuntos puede ser problema de tu servidor de correo, hasta ahora los adjuntos que he enviado han llegado sin problemas.

    Milton: Como menciono arriba, puedes personalizar el script, puedes crear tu propio formulario y sólo invocar al script php, sobre cambiar el nombre de los elementos, puedes hacerlo, pero asegúrate tambien de hacerlo en el script.

    Daniel: Para redireccionar a otra página, simplemente debes enviar los cabeceras para eso: header("Location: tupagina.php");, esa parte debes ubicarlo al final de:
    if ($postback) {
    ...
    header("Location: tupagina.php");
    }
    ..

    Saludos.

  36. por favor podrías especificarme como hacerlo?...aqui te dejo mi link de la pagina...en el link de concactenos quiero poner este formulario pero quiero trabajarlo con este mismo scrìpt, como veras, hay un espacio vacio alli para poner el formulario, lo que quiero saber es como vinculo la pagina contactenos.html con los scripts para que trabajen normalmente..por favor una ayudadita, no entiendo muy bien PHP pero puedo usar el dreamweaver a nivel basico, ya que uso front page...como veran la pagina esta vacia pero ya ire poniendo el texto...me estoy enfocando mas en lo mas dificil para mi..lo que es el formulario..pero no quiero perder el diseño de la pagina, osea no quiero trabajar con un formulario vacio, sin vida.....se podrá?....hize eso de pegar todo el code de mi pagina y pegarlo en mi form pero cuando lo guardo en formato php, se pierden los graficos...quisiera una ayudadita paso a paso...

    Mi pagina: http://usuarios.lycos.es/comprasenusa/index.html

  37. Alex , gracias por tu respuestas , te molesto la ultima vez ,

    Yo estoy usando el formulario para vender fotografias por medi de una pagina , ed decir la gente me manda usando el formulario una foto y despues de confirmarle el envio hace click y va a una pagina de paypal .
    Lo que no puedo hacer es ponerle un hipervinculo a paypal a la confirmacion del mensaje que diga algo asi : " Su mensaje se a enviado (haga click aqui para seguir el proceso )

    Necesito que la persona al hacer click en "la confirmacion de envio" se abra en una pagina nueva a Paypal .
    Tiene que ser en una pagin nueva .
    Trato de ponerle un hiperviculo y me da error . como puedo hacerlo ?
    Gracias

    Saludos

  38. Milton: Como ya te había mencionado, puedes modificar las cosas que quieras, sólo debes tener cuidado en el cambio de los nombres, por ejm: Si en el formulario cambias:
    <input type="text" name="from" id="from" size="60" />
    por
    <input type="text" name="remitente" id="remitente" size="60" />

    En el script PHP deberías cambiar $mail->From = $from; por $mail->From = $remitente;.

    Daniel: Acabo de responder al mail que me enviaste, me indicas qué es lo que _exactamente_ deseas para poder ayudarte.

  39. Necesito ayuda con Upload...

    Quiero subir un archivo que se encuentre en una determinada carpeta en el cliente(Esto siempre va a ser así, es decir, el nombre de la carpeta es estandar) de manera automatica sin hacer clic en examinar, sino que se suba en background cuando se envie un formulario , ej: c:\PDF\ y el nombre del archivo va hacer dinamico...

    Por favor, ayudenme con esto ya que es urgente....he estado investigando pero no encuentro nada...mis paginas estan hechas en PHP,

    Gracias...le agradezco su colaboracion

  40. No puedes hacerlo sólo con PHP, ya que éste no tiene acceso a los recursos del cliente, además por razones de seguridad no puedes tener un valor por defecto en un elemento de tipo "file". Necesitas siempre de la intervención del usuario o crear un programa cliente que se encargue de subir los archivos...

    Saludos

  41. Alex buenas tardes, como se puede hacer para agregar mas campos al formulario y que también los envíe con el correo, ejemplo existe un campo que es el cuerpo del documento, como se puede hacer para adicionar mas campos de este tipo, por ejemplo agregar dos textarea mas que contengan otra información pero que tambien lleguen junto con el correo, mil gracias por su ayuda

  42. hola, veo que eres un experto en informatica y quisiera ver si puedes ayudarme. necesito abrir un archivo con terminación( .msg), pero no se como hacerlo o con que programa, ojala pudieras ayudarme.

  43. Alex, veo que aquí varios necesitamos mas campos de texto en el formulario, por favor enseñanos que devemos hacer?

    GRACIAS

  44. Primero que nada disculpen por mi ausencia.

    Mao y Gerardo: Lamentablemente no puedo poner el ejemplo dentro de los comentarios, tampoco creo que sería bueno que modifique el "artículo", qué me sugieren hacer??

    Saludos

  45. Saludos, Felicitaciones por tu formulario esta buenazo.

    Tengo un pequeño poblema: cree la carpeta donde seran publicados los archivo que se subiran y tambien le di permisos 777. lo que no logro cambiar es la ruta para esa carpeta si me pueden ayuda...

    move_uploaded_file($tmp_name, "ruta/directorio/$name");

    en que linea esta ese move_uploaded_file.

    Gracias

  46. Gerardo: Volví a enviar la modificación a la dirección que mencionas.

    Xander: Esa línea está comentada, tienes que "descomentarla", el segundo parámetro indica la ruta que definiste para guardar tus archivos.

    Saludos

  47. holas, tengo problemas al enviar emails desde gmail nose si tengo que configurar mi cuenta o modificar el codigo. de phpmail.

    help me.

  48. Hola Isabela, tienes algún mensaje de error al intentar enviar? qué es exactamente lo que estás haciendo?.

    Saludos
    PS. Para que no se haga más extenso los comentarios, puedes contactarme en: alex[@]buayacorp.com

  49. Hola Isabela, disculpa q te moleste pero tengo una duda en la q tal ves podrias ayudarme, tu codigo me funciona muy bien, pero cuando quiero enviar el e-mail con copia utilizando :

    $mail -> AddCC("otromail@dominio.com")

    no me aparace ningun mensaje de error sin embargo el mail dirigido a esta persona nunca se envia, si pudieras pasarme algun dato del ¿porq? te estare eternamente agradecido.

  50. Hola a todos. mi pregunta es si es posible especificar el tipo de fichero para subir, es decir, que sólo se puedan enviar ficheros "EXE" o ficheros "IMAGEN" por ejemplo.

    Gracias!

  51. Hola,

    A nivel del cliente, sólo puedes comprobar las extensiones de los archivos que suben, pero a nivel del servidor si puedes basarte en el MIME del archivo (una vez que haya subido).

    Saludos

  52. Alex:
    Antes que todo, mis felicitaciones y agradecimientos. De todo lo que he podido encontrar en la web respecto a este tema, creo que esta solución es la más práctica y comprensible. (Estoy dando mis primerois pasos en PHP.)
    Quisiera aprovecharme de tu buena disposición y pedirte si me puedes enviar como debería modificarse el código para agregar mas campos de texto, tal como se los mandaste a Mao y a Gerardo.
    Además, si fuera posible, que me explicaras como no recurrir al javascript para adjuntar archivos y poner directamente campos de archivo en el formulario.
    De antemano, te reitero mis agradecimientos y felicitaciones por vuestra página.
    Mario

  53. Hola,

    Albert: Lamentablemente no contamos con tiempo para hacer el trabajo por ti.

    Mario: Gracias por los comentarios, ya te contesté al mail que proporcionaste.

  54. Bueno antes que nada felicitaciones por este articulo esta bastante bueno, es lo que andaba buscando, pero tengo una pequenia preguntita
    A) Por ejemplo cuando te llega un archivo adjunto a tu correo te aparece el nombre del archivo, si el archivo enviado fue "archivo.zip" ese nombre te aparece cuando se te envia. Al parecer en tu ejemplo tu mismo tienes que generar un nombre para este archivo. ¿No se le puede poner el mismo nombre (al archivo) con el cual se esta enviando para que al destinatario le llegue el mismo nombre de archivo que yo envie?

  55. Si se puede, simplemente quita esta línea del script:
    $name = uniqid('bc') . '_' . $name; # Generar un nombre único para el archivo

    Saludos

  56. Oye y esta parte:

    $mail -> FromName = "BuayaCorp"; # Puede obtenerse del formulario, por facilidad se hace de esta manera

    ¿Que parametro es? ¿Como lo puedo obtener del formulario (como tu dices)?

  57. Hmm, esa _variable_ indica el nombre con el que se envía el correo (BuayaCorp ), puedes _recibirlo_ poniendo otro elemento en tu formulario HTML...

    Saludos

  58. Alex: te agradezco enormemente la respuesta que me mandaste; me funcionó perfecto.
    Quisiera aprovechar tu disposición y hacerte algunas preguntas más:

    1.- Hay alguna posibilidad de aumentar el tamaño de los archivos que se envían...¿como?. (Pasados los 5mb, se queda pegada la página o, simplemente no me despacha nada.)

    2.- Si no es posible lo anterior, ¿como se podría hacer para que al sobrepasarse la capacidad máxima de despacho le apareciese un mensaje al usuario informándole que no puede seguir adjuntando archivos?

    Ojala me puedas responder, lo más detallado posible (a prueba de novatos)

    Agradecido desde ya,

    Mario

  59. Alex: te agradezco enormemente la respuesta que me mandaste; me funcionó perfecto.
    Quisiera aprovechar tu disposición y hacerte algunas preguntas más:

    1.- Hay alguna posibilidad de aumentar el tamaño de los archivos que se envían...¿como?. (Pasados los 5mb, se queda pegada la página o, simplemente no me despacha nada.)

    2.- Si no es posible lo anterior, ¿como se podría hacer para que al sobrepasarse la capacidad máxima de despacho le apareciese un mensaje al usuario informándole que no puede seguir adjuntando archivos?

    Ojala me puedas responder, lo más detallado posible (a prueba de novatos)

    Agradecido desde ya,

    Mario

  60. despues de recorrer varios sitios este fue el mejor ejemplo de envio de mail con archivos adjuntos, y funciona a la perfección, pero me surgió un problema, no me llegan los mail a mi casilla de hotmail y a la de yahoo, en cambio a la de gmail si me llegan sin ningun tipo de inconveniente.
    Alguien sabe como configurar el script para que se pueda recibir en las casillas de hotmail y la de yahoo?

  61. Prueba enviando usando el servidor SMTP directamente y poniendo algunas cabeceras relevantes, si continúan los problemas puedes enviarme un mail, para ver si puedo ayudarte o no.

    Saludos

  62. Alex, tengo el mismo problema que tiene Mario Arturo, si me envian un archivo demasiado pesado no me llega a mi bandeja de entrada, entre al enlace que es mencionado arriba como referencia pero no encontre nada, hay alguna forma de que se me envie información mas pesada, o que si llega a el tamaño maximo, rebote un mensaje de alerta?

    Mil Gracias por toda su ayuda.

  63. Hola, desde ya gracias a vosotros por el excelente trabajo que haceis, les comento trate de utilizar el código pero me reporta el sgte error:
    Warning: Invalid argument supplied for foreach() in /data/virtuales/visitusaperu.org.pe/uploader/uploader.php on line 29

    Podeis echarme una mano con esto. Gracias anticipadas.

  64. Hola,

    Para agregar nuevos campos, simplemente inserta los tags correspondientes dentro del formulario (Ejm. <input name="foo" type="text" />) y lo recuperas el valor de éste con el nombre que usaste ($foo)

    Saludos

    Saludos

  65. Hola Alex podeis ayudarme, pf. con el comentario 84, hace mas de una semana que lo postié pero no pasa na. Gracias

  66. Hola Binfel,

    El error que muestras es algo genérico, sería bueno que indiques la versión de PHP que tienes, si modificaste el script o no. En todo caso, asegúrate que los archivos por lo menos llegan al servidor.

    Saludos

  67. Binfel, este error sale cuando recorres algo que no es un arreglo, en este caso la variable $_FILES, lo que supongo es que en tu formulario no estás poniendo corréctamente el atributo enctype, debería ser asi

    HTML:
    <form name="frm" id="frm" action="" method="post" enctype="multipart/form-data">

    Revisa, talvez ese sea el error.
    Saludos

  68. QUE TAL ALEX

    TE COMENTO QUE CUANDO COLOCO EL EJEMPLO QUE ME DICES EN EL COMENTARIO 86 NO LOGRO RECUPERAR EL VALOR, SINO QUE LO SUSTITUYE POR OTRO

  69. Hola.

    Te felicito por tan buen scripts, me ha servido de mucho.

    Tengo una pregunta, a partir de estos scripts desarrolle una pequeña página que maneja DOM con javascript para manejo de etiquetas HTML. El punto es funciona perfectamente en Mozilla Firefox, pero no funciona en Internet Explorer.

    Quisiera saber si me puedes ayudar a solucionar esto. Te mando el código del archivo que te digo.

    De antemano te agradezco por tu colaboración.

    Carlos

    Anexo código fuente del archivo “Tabla.html”

    Tablas

    var numero = 0;

    function valor_cero(){
    frm.i.value='';
    frm.i.value='0';
    }
    // Funciones comunes
    c= function (tag) { // Crea un elemento
    return document.createElement(tag);
    }
    d = function (id) { // Retorna un elemento en base al id
    return document.getElementById(id);
    }
    e = function (evt) { // Retorna el evento
    return (!evt) ? event : evt;
    }
    f = function (evt) { // Retorna el objeto que genera el evento
    return evt.srcElement ? evt.srcElement : evt.target;
    }

    addField = function () {
    cont=parseInt(frm.i.value);
    cont+=1;
    frm.i.value=''+cont;
    contenedor = d('tabla_contenedora');
    // Se crea la fila
    tr=c('TR');
    tr.id='tr'+cont;
    //se agrega el td de codigo
    td_codigo=c('td');
    td_codigo.align='center';
    td_codigo.id='td_codigo'+cont;
    //se crea el campo de codigo
    campo_codigo = c('INPUT');
    campo_codigo.name = 'codigo'+cont;
    campo_codigo.type = 'text';
    //se agrega el td de descripcion
    td_descripcion=c('td');
    td_descripcion.align='center';
    td_descripcion.id='td_descripcion'+cont;
    //se crea el campo de descripcion
    campo_descripcion = c('INPUT');
    campo_descripcion.name = 'descripcion'+cont;
    campo_descripcion.type = 'text';
    //se agrega el td de cantidad
    td_cantidad=c('td');
    td_cantidad.align='center';
    td_cantidad.id='td_cantidad'+cont;
    //se crea el campo de cantidad
    campo_cantidad = c('INPUT');
    campo_cantidad.name = 'cantidad'+cont;
    campo_cantidad.type = 'text';
    //se agrega el td de valor unitario
    td_vu=c('td');
    td_vu.align='center';
    td_vu.id='td_vu'+cont;
    //se crea el campo de valor unitario
    campo_vu = c('INPUT');
    campo_vu.name = 'valor_unitario'+cont;
    campo_vu.type = 'text';
    //se agrega el td de valor unitario de descuento
    td_vud=c('td');
    td_vud.align='center';
    td_vud.id='td_vud'+cont;
    //se crea el campo de descripcion
    campo_vud = c('INPUT');
    campo_vud.name = 'valor_unitario_descuento'+cont;
    campo_vud.type = 'text';
    //se agrega el td de valor total
    td_vt=c('td');
    td_vt.align='center';
    td_vt.id='td_vt'+cont;
    //se crea el campo de descripcion
    campo_vt = c('INPUT');
    campo_vt.name = 'valor_total'+cont;
    campo_vt.type = 'text';
    //se agrega el td de Quitar TR
    td_quitar=c('td');
    td_quitar.align='center';
    td_quitar.id='td_quitar'+cont;
    //se crea el campo de descripcion
    boton_quitar = c('INPUT');
    boton_quitar.name = 'quitar'+cont;
    boton_quitar.id = 'quitar'+cont;
    boton_quitar.type = 'button';
    boton_quitar.value= 'Quitar';
    boton_quitar.onclick = removeField;
    //se agregrega y se imprime
    tr.appendChild(td_codigo);
    tr.appendChild(td_descripcion);
    tr.appendChild(td_cantidad);
    tr.appendChild(td_vu);
    tr.appendChild(td_vud);
    tr.appendChild(td_vt);
    tr.appendChild(td_quitar);
    td_codigo.appendChild(campo_codigo);
    td_descripcion.appendChild(campo_descripcion);
    td_cantidad.appendChild(campo_cantidad);
    td_vu.appendChild(campo_vu);
    td_vud.appendChild(campo_vud);
    td_vt.appendChild(campo_vt);
    td_quitar.appendChild(boton_quitar);
    contenedor.appendChild(tr);
    }
    removeField = function (evt) {
    lnk = f(e(evt));
    td=lnk.parentNode;
    tr=td.parentNode;
    tabla=tr.parentNode;
    tabla.removeChild(tr);
    }

    Tablas   Agregar Tr

    Codigo
    Descripcion
    Cantidad
    Valor Unitario
    VR UN%DESC
    Valor Total
    Quitar

  70. Hola, me gustaria pedirte ayuda. Creo haber configurado bien todo, pero todavía no consigo hacer que me lleguen los mansajes. Siempre me sale "No se ha podido enviar el mensaje". A alguien le importaria agragarme al msn (iportillo_barca@hotmail.com) y echarme una mano...??

    Gracias

  71. Hola,

    Usa $mail->ErrorInfo para saber exáctamente cual es el error.

    Saludos
    PS. Me gustaría añadirte a mi msn, pero no doy soporte :-)

  72. Hola. Cuando intento ejecutar el script me aparece el error : 'container' es nulo o no es un objeto. Este error se produce cuando se va a ejecutar la línea container.appendChild(span);

    ¿Puede alguien decirme a qué se debe?

    Gracias.

  73. Hola quisiera que me ayuden porque tengo la necesidad de enviar mails a través del internet adjuntando un archivo, que es lo que muestra este ejemplo.
    Quisiera saber cómo puedo hacer que en ek nombre de destinatario pueda elegir las direcciones mail desde una base de datos??? gracias

  74. Hola,

    Alberto: El error probablemente se deba a que no tengas un elemento con id "files", que es el que está por defecto en el script container = d('files');. Puedes ver una versión mejorada de ese script en esta otra entrada

    Erick: Puedes usar Autocompleter que forma parte de http://script.aculo.us/

    Saludos

  75. Alex, te agradeceria a infinitamente si me puedes mandar todo el codigo o las instrucciones para agreagar mas campos de texto a mi correo andres@ingenio-imagen.com

    Un saludo y felicidades. Por cierto conoces HOSTINET.COM?

    es que ayer me funcionaba a la perfección tu escript y hoy me realiza la funcion de addField, vamos, que hago click y nada. sabes a ke se puede deber este error?. te repìto que ayer funcionaba perfectamente y hoy ya no (www.hostinet.com)

  76. Es un archivo muy interesante pero no tengo ni idea de como implementarlo en mi web. Me interesa hacer una especie de formulario de información en el que se pudiese adjuntar un cv y enviarlo a una direccion de correo. Agradeceria cualquier ayuda.

    Un saludo y gracias.

  77. sabeis como tengo que enviar un correo en el cual como fondo tengo una imagen, sin que esta imagen aparezca como fichero adjunto en Hotmail.
    al enviar publicidad a los cllientes, he construido un fichero .html que lo inserto como fondo de correo. Si lo envío y recibo por Outlook no hay problema. Si hay problema con Hotmail, y es el que intento solucionar.
    A ver si me podeis ayudar, que debe ser algo facil, pero que ahora mismo desconozco.

  78. Hola,

    Jorge 1: Hacer las modificaciones para el envío de cv's es una tarea trivial, te sugiero que comiences a leer algo sobre html y php

    Jorge 2: Para que puedas enviar imágenes dentro del mail, éste tiene que estar en formato HTML ($mail->IsHtml(true);), tienes 2 opciones:
    - La imágen se cargue de manera remota:
    $mail->Body = '<img src="http://tusitio.com/una-imagen.png" />';
    - La imagen esté *embedida* dentro del mail:
    $mail->IsHtml(true);
    $mail->AddEmbeddedImage('/home/alex/una-imagen.jpg', 'un-id', 'una-imagen.jpg '));)
    $mail->Body = 'Imagen: <img src="cid:un-id" />';

  79. me figura este erro alguien sabe que es? :
    Warning: fsockopen() has been disabled for security reasons in /www/sites/1/iespana.es/s/h/shaper/site/class.smtp.php on line 105

  80. El error es claro, no se puede usar fsockopen en tu proveedor de hosting, me imagino que estás intentando enviar mails usando smtp, intenta hacerlo usando sólo la función mail.

    Saludos

  81. No me llegan los adjuntos si el email, hay que configurar algo para que lleguen porque no veo el el error si alguien me puede ayudar???

  82. Hola,

    Ese problema, al parecer, se presenta porque los archivos que se envían son grandes y no se terminan de subir, revisa el comentario 82. e intenta modificar los parámetros allí mencionados.

    Saludos

  83. alex intente hacer lo que me decis de colocar un archivo de menor tamaño y no funca me comunique con el servicio tecnico de mi servidor y no saben un corno. hay algo que se me esta escapando y no se que sumale que mucho no se de progrmacion. encontre un pag que me dice Añadiendo estas dos lineas:
    $archivo=$HTTP_POST_FILES['archivo']['tmp_name'];
    $archivo_name = $HTTP_POST_FILES['archivo']['name'];
    los archivos adjuntos llegaran a su destino ;)::::pero no se donde va
    no se si tengo que modificar el uploader.php o el phpmailer,igual te agradezzco tu ayuda. si de alguna manera podes revisar el codigo que tengo te lo voy a agradecer. saludos

  84. Hola. Veo que tus conocimientos son enormes, por eso a ver si me puedes ayudar. Tengo un formulario simple PHP, que utilizo en mi web, la cual se aloja en el servidor de Averroes (Junta de Andalucía). Pues bien, no sé cómo modificar su código para poder enviar archivos adjuntos al destinatario que recibe en emaili. ¿Podrías ayudarme?. Te lo agradecería enormemente. Es una web de un colegio, y necesitamos esta función. Gracias por todo.

  85. Hola,

    Occy: Las líneas que pones se usaban en versiones anteriores de PHP, habría que hacer pruebas para determinar el problema.

    Enrique: Envíame el archivo que tienes a [alex at buayacorp dot com].

    Saludos

  86. ¿Por qué cuando intento enviar un archivo adjunto que pesa mas de 20 MB en gmail no puedo??? supuestamente gmail tiene un espacio de 2727 MB, entonces ¿a qué se debe???

    Gracias

  87. como paso un archivo oculto desde el usuario al servidor.
    La idea es que el usuario tenga una planilla en su PC
    pinche un boton en la web y se actualice una base de datos del servidor.

    Hasta ahora

  88. No se puede hacer eso por motivos de seguridad, me imagino que tendrías que utilizar ActiveX o un Applet, u algún software para el cliente.

    Saludos

  89. saludos, siempre quise poner un formulario como este, ahora que lo encontré no puedo isntalarlo, ya que quiero cambiar toda mi pagina a php, la verdad es que no se muy bien esto de la programación, pero me gusta y he podido hacer cosas que me facilitan el trabajo, espero me puedas ayudar a francamente por pasos que debo seguir para la instalación de este buen formulario, otra cosa el escrip que me hace la función de solicitar que información falta, cuando pongo el de la muestra no funciona el primer scrip. te lo agradeceré mucho.

  90. Me parece muy util, ahora tengo una duda como puedo hacer para subir imagenes temporalmente, explico:
    - Tengo un formulario por medio del que doy de alta empresas, pero cada empresa tiene N productos, como puedo hacer para agregar y validar cada imagen de los productos no sabiendo la cantidad y sin llenar mi servidor de archivos temporales?; El problema está en que la imagen la debo tener como archivo no como campo Blob en una tabla temporal, alguien puede ayudarme y si es así escribanme por fabor gracias

  91. Hola.

    Me ha sido de gran ayuda este código fuente, pero tengo un pequeño problema.

    Al momento de crear campos de tipo input (text) con el DOM de JavaScript, no puedo colocarlos como campos de solo lectura ósea readonly, y la verdad no he encontrado cual es la línea de comando exacta.

    He utilizado algunas líneas de código como la siguiente pero no me han funcionado. Para el caso de esta aplicación seria:

    field.readonly = true;

    Se que la línea esta errada ya que no funciona.

    Espero que me puedas ayudar.

    Gracias.

  92. Hola,

    Ricardo: Para *instalar* este script lo único que debes hacer es copiarlo a un directorio accesible por el servidor web.

    Body: Simple, sube las imágenes a un directorio destinado para eso y luego guardas los nombres de dichos archivos en algún lugar (ej. base de datos), de esta manera podrás eliminarlos después si no pasan el proceso de validación.

    Carlos: Prueba con field.readOnly = true;

    PromocionWeb: Borrando todo código javascript que está presente en el ejemplo debería bastar para el ejemplo simple que pides.

    Saludos

  93. Hola !

    Estoy empezando con una pagina de mi facultad, y quiero q me manden sus trabajos, por lo que este script me sirve de mucho, me parece muy bueno, solo que quisiera que me pudieran ayudar diciendome como puedo quitar el campo que dice "para" y que la direccion a la que quiero que se envie sea automatico, es decir ya no tengan q poner la direccion la persona que quiera enviar un archivo.... soy un novato en estos aspectos, necesito mucho su apoyo, gracias de antemano

  94. Rafael: En el código HTML sólo quitas las líneas que dicen

    HTML:
    <dt><label for="to" accesskey="1">Para</label></dt>
                    <dd><input type="text" name="to" id="to" size="60" /></dd>

    Y en el código PHP modificas la parte que dice

    PHP:
    $mail -> AddAddress ($to);

    por

    PHP:
    $mail -> AddAddress ("elcorreo@alquequieresmandar.com");
  95. Estoy probando el script en localhost y me dice que no se ha podido enviar el correo, pero pruebo en el ejemplo online que tienes y me dice lo mismo.
    Ahora estoy perdido podrias hacer un breve comentario de como instalar el script y las cosas basicas que hay que cambiar para que funcione

  96. Gracias por todo este trabajo que haceis, y el valioso tiempo que nos dedicais, he estado buscando algo como esto en muchos sitios y como no encontraba nada me decidi por buscar un programadores web, que me cobraban por hacer algo similar entre 250 y 300€.
    No se mucho de estos temas pero investigando, investigando me resulta hasta facil simplemente con un editor web se pueden modificar muchos apartados y era justamente lo que necesitaba.
    Os estoy enormemente agradecido, muchas gracias.
    A veces resulta tan fácil hacer feliz a la gente.

  97. Hola Alex primero déjame felicitarte por este código que ha facilitado para todo el publico, esto se adapta muy bien a mi pagina a lo que pienso hacer, ya le meteré mano para agregarle más campos que necesito y que sea de una vez enviado a mi correo o a una carpeta especifica, te molesto por lo siguiente como podría hacer para que cuando las personas me envíen la foto y el comentario esto se publique de manera automática como se puede observar en este comentario. Necesito hacer esto pues quiero que mis visitantes puedan anunciar alguna venta de producto. Espero tu repuesta.

  98. Buenas de nuevo
    He pasado del localhost y he cogido un espacio en iespana.es, q se supone que admite php, he subido el ejemplo sin tocarlo y los he probado, el resultado es que siempre me da mensaje enviado, pero no recibo nada en las cuentas de correo, he probado con hotmail, lycos y el propio iespana pero nada. ¿puede ser que el servidor iespana no lo admita aunque la pagina diga que se envio? o ¿hay algo que yo hago mal?

    Un saludo

  99. Braulio, Alex por favor me podeis poner un ejemplo claro, que el que no sabe es como el que no ve, de como añadir campos al formulario y que me los envie, lo intento con un editor web pero no me envia los campos nuevos solos los que tiene el ejemplo vuestro.
    Muchisimas Gracias por el tiempo robado.

  100. Hola,

    Ramsses: Muchas gracias por el comentario.

    Vasco: Lo que comentas se parece a un "libro de visitas", te sugiero que busques alguno en hotscripts.com y lo modifiques de acuerdo a tus necesidades, si tienes problemas puedes contactarme en alex at buayacorp dot com.

    Raul: Lamentablemente no conozco los servicios y características que ofrecen en iespana.es, te sugiero que le des un vistazo a dotgeek.org (cada mes sortean una cuenta de hosting gratis, sin publicidad).

    Andaluz: Lo que tienes que hacer es simplemente agregar un elemento en el HTML y luego recuperar su valor en PHP,

    html:
    <input type="text" name="NombreCampo" />

    En php puedes recuperar el valor de la variable con $NombreCampo (gracias a la función extract) ó también $_GET['NombreCampo'] (si pasas la variable por GET), $_POST['NombreCampo'] (si pasas la variable por POST) y $_REQUEST['NombreCampo'] (si no estás seguro :) ).

    php:
    $mail -> Body = "Variable: " . $NombreCampo;

    Saludos

  101. Disculpa otra vez Alex pero llevo 4 horas y no se que c.... hago mal tengo en
    html: $mail -> Subject = $sbj;
    $mail -> Body = $textfield;
    $mail -> Body = $msg;
    $mail -> IsHTML (true);
    Y en php:
    Asunto

    Campo nuevo

    Mensaje

    He provado de varias maneras pero solo me manda los campos de siempre, el nuevo no me lo manda y si me manda el "campo nuevo" no me manda el del "mensaje" o uno o otro pero ¿porque no me manda los dos?.
    Soy novatisimo en esto.

  102. Perdona esto na ha salido bien:
    Html:
    $mail -> Subject = $sbj;
    $mail -> Body = $textfield;
    $mail -> Body = $msg;
    $mail -> IsHTML (true);

    PHP:
    Asunto

    Campo nuevo

    Mensaje

  103. Hola Andaluz,

    Si te fijas el comentario 128 te darás cuenta que los campos se concatenan...

  104. Lo siento Alex, perdona por haberte molestado; pero estoy a punto de tirar la toalla, ¡si vieras las veces que he provado el dichoso formulario!,
    Es como hacerle comprender a un burro que esta en un garage. Se que te resultara sumamente sencillo, pero Yo soy el burro y no soy capaz de comprenderlo.
    Les estaria enormemente agradecido si a Ti o a alguna alma caritativa que lea este post, me mande por favor un ejemplo, como el que tienes puesto en esta web, completo pero con tres o cuatro campos mas, para que el burro observe donde esta el problema, les estaría infinitamenteeeeee agradecido.
    Mi e-mail yhnmoi@terra.es De todas formas muchisimas gracias por tus prontas respuestas.

  105. hola muy bueno el sitio.
    soy nuevo en esto del php y quisiera hacer una consulta para poder correr el script que version de php debo tener? es necesario hacer algun cambio en el phpmailer (configurar algún parametro??). Se que son consultas básicas sorry.

  106. hola
    visite tu pagina y tal vez puedas ayudarme
    manejo muy poco todo el tema de los formularios, solo se hacer cosas simples y necesito con urgencia un formulario con un boton "adjuntar archivo" que permita al usuario adjuntar una fotografia.
    te agradeceria mucho si pudieras envairme al mail un formulario tipo con estas caracteristicas y el php para poder recibirlo en mi correo
    gracias
    saludos
    carolina

  107. La verdad es que no logré hacerlo funcionar.... ni el ejemplo en su pagina me deja probarlo no se porque será pero tampoco me dice que no se puede enviar el e-mail... lo compie lo instale en mi servidor y lo probé allí me dice que hay un error en la linea 29 que el formato de la sentencia foreach ( $_FILES["archivos"]["error"] as $key => $error) es erroneo la verdad que no tengo mucha experiencia en PHP... pero no logro que ande

  108. Baja la versión original de phpmailer, ahí incluye los archivos de localización para que te muestre los errores en el idioma seleccionado.

    Saludos

  109. Hola el script es perfecto para lo que quiero hacer pero tengo una pega no consigo que me envie mas de un campo de texto en el mensaje.Enviarme los ficheros y demas perfecto pero eso no lo consigo y mira que he modificado casi todo el codigo.
    Por favor si podeis mandarme los archivos modificados indicandome donde esta la modificaciones. Lo he intentado con lo que pone en los comentarios anteriores sobre la misma pregunta pero no se porque no me funciona un saludo a todos y gracias.

    PD. fciscojose[@]hotmail.com

  110. Hola!!

    Vi la aplicación y la considerá muy buena, pero no me fuciona!!!, me dice mensage enviado, todo corre perfectamente, pero el email nunca llega, ?¿?, sin embargo prueba una función que yo tenia SendMail hecha y si que me llega el email, pero esta es incompleta porque yo quiero que me mande 3 archivos adjuntos. Mi pregunta es porque no me llega el correo de tu ejemplo

  111. Hola Carolina,

    No tengo idea porque no funciona el ejemplo en tu caso, puede ser por muchos motivos, revisa los comentarios anteriores.

    Saludos

  112. Hola Alex te quiero agradecer por el tiempo que nos dedicas.
    Paso a contarte mi duda.

    Primera duda, ya intente de un monton de formas para añadir mas campos al formulario y no puedo.
    Ya cree un capo nuevo

    pero no entiendo de que forma agregar la variable $nuevo en
    $mail -> Body = $msg;

    Y la segunda duda, es cuando envio archivos adjuntos de alrededor de 3mb,
    El problema aca es que en el tiempo que tarda despues que apretaste el boton de "enviar" hasta que carga los archivos adjuntos y los envia, el usuario tal ves no se de cuenta que el mail se esta enviando y cierre la ventana y el mail no llegue a destino. Existe alguna forma de que aparezca un cartelito que diga: "su mensaje con sus archivos adjuntos se estan enviando, por favor espere" y recien cuando el mail ya fue enviado aparezca otro cartelito que diga "su mail fue recibido satisfactoriamente, muchas gracias"

    PD: ya revise todos los comentarios y no logre entender lo que necesito. Agradeceria muchisimo su ayuda.
    mi mail es juangm88@yahoo.com.ar

  113. Ya solucione eso de añadir mas campos "concatenando"
    lo hice asi:
    $mail -> Body = "Numero fijo: "."$msg".""."Numero del celular: "."$numcel".""."Calle: "."$calle".""."Departamento: "."$depar";

    $msg corresponde a un campo para el numero de tel fijo
    $numcel corresponde a un campo para el numero de cel
    $calle corresponde a un campo para escribir la calle de donde vives
    $depar corresponde a un campo para poner el departamento donde vives

    Osea que agregue como 4 campos

    //-----------------------------------------------------------------------

    Pero todavia no resuelvo el problema de cuando envio archivos adjuntos de alrededor de 3mb. El problema aca es que en el tiempo que tarda despues que apretaste el boton de "enviar" hasta que carga los archivos adjuntos y los envia, el usuario tal ves no se de cuenta que el mail se esta enviando y cierre la ventana y el mail no llegue a destino. Existe alguna forma de que aparezca un cartelito que diga: "su mensaje con sus archivos adjuntos se estan enviando, por favor espere" y recien cuando el mail ya fue enviado aparezca otro cartelito que diga "su mail fue recibido satisfactoriamente, muchas gracias"

    PD: agradeceria muchisimo su ayuda

  114. Hola Juan Pablo,

    Me parece bien que hayas solucionado una parte de los problemas que mencionaste.

    En cuanto a la segunda pregunta primero tienes que considerar que por defecto sólo se puede subir archivos de 2MB (revisa el comentario #82 para más detalles); lo que se me ocurre en este momento es que una vez que presiones el botón para enviar el mail, deshabilites el mismo y a su vez uses uno de estos íconos (lamentablemente no voy a poder enviarte un ejemplo, ya que últimamente ando algo ocupadito).

    Saludos

  115. Saludos amigos yo subi el ejemplo y funciono de maravilla, solo que no se si alguien me pudiera enviar el mismo ejemplo pero eliminando el primer campo y poner una direcci

  116. Hola.. estoy creando un formulario que permita adjuntar archivo... no se mucho o mejor dicho nada de PHP pero vi tu ejemplo y creo que es lo que necesito, aunq no sé bien a dónde envia el adjunto...
    Lo que quiero es que envie el conenido del formulario a una web incluyendo el archivo adjunto... Qué debo hacer..? Te agardezco la ayda de antemano...
    Velia

  117. Hola Velia,

    Si se trata de subir sólo el archivo, hay una parte comentada en el script que te dá una pista de lo que deberías hacer.

    Lo mejor es que aprendas por lo menos un poquito de PHP, para saber que está haciendo realmente el código.

    Saludos

  118. Hola Alex. Muy interesante tu articulo, pero la verdad es que no se porque no me funciona. Baje, descomprimi los archivos, los instale en mi maquina. No hice ningun cambio. Envie un mail con un archivo adjunto, no me sale ningun error hasta me muestra el mensaje que envie correctamente el mail y me muestra que archivo mande, pero no me llega a ninguno de los correos con los que hice la prueba. No se si hay que hacer algun cambio o colocar algun nombre de servidor SMTP o algo. Por favor te agradeceria la ayuda. Al principio pense que estaba tardando en enviar el mail pero espere de un dia a otro y no llega nada. Gracias por la ayuda.....

  119. utilizo el mail.uagrm.edu.bo, no se si ese nombre tengo que ponerlo en algun lugar del codigo. Lo que necesito saber es si a los archivos que bajamos tenemos que cambiarle algo.

  120. Mil gracias Alex, me funciono correctamente, ya me llegan los correos con los archivos adjuntos, ahora solo me falta hacer algunas modificaciones sobre el nombre del archivo y otras cositas que no hay problema con eso. Leyendo los mensajes anteriores lo solucionamos. Gracias.

    Muy bueno tu articulo.

    Saludos

  121. Hola que tal, excelente tu ejemplo y tutorial...
    estuve intentanto agragar mas campos en el formulario para el cuerpo del mail, pero no me doy cuenta de mi error..Me enviarias el ejemplo con mas campos para el formulario..mil gracias.

  122. Hola, quisiera hacerte una conculta. Estoy tratando de poner un "CAPTCHA" en este formulario, con idea de dejarlo igual al ejemplo que tienes en línea. Hasta ahora no me resulta....¿podrias pasarme el código que utilizas en el ejemplo pero con el captcha agregado?.....de antemano muchas gracias.

  123. Buenas me parece un excelente articulo. felicitaciones Alex, tengo una duda, como podria hacer para adjuntar un archivo q ya tengo en mi servidor y enviar el email con el adjunto sin necesidad de tener que darle click en "Añadir archivo".
    Gracias

    Sambora

  124. Sambora, quita todo lo relacionado sobre subir archivos, pues sólo necesitarías llamar al método AddAttachment: $mail -> AddAttachment ('/ruta/fisica/nombre.zip', 'nombre.zip');

    Saludos

  125. No puedo mandar archivos adjuntos, desde mi computador, me aparece un mensaje. error de Javascript, el objeto no acepta esta propiedad o metodo, desde ya muchas gracias por tu ayuda

  126. Hola Alex.

    Sabes te pido por favor, si puedes enviar a mi mail la forma de agregar mas campos al formulario ( campo de telefono) si pudieras darme una mano. Agradecido desde ya
    Oscar

  127. XDDDD

    ya lo habia leido con otro nombre de las variables, es muy buen codigo. lo unico engorroso es tratar de combinarlo con xsl...
    no puedo hacer abstraccion con el javascript desde xsl, pero en fin.

    se agradece el codigo.

  128. Hola:

    buscando en el google me encontre con este sitio y me parecio perfectisimo todo lo que se postea aqui, de hecho este tutorial me parece muy bueno y las dudas de los demas me han ido "aclarando" un poco el panorama.

    bien, estoy haciendo una pagina de noticias para que el usuario suba sus noticias, pero me han pedido que en el formulario se presente un boton o enlace para subir archivos a la base de datos, y que la informacion no se envie a la base de datos hasta que el usuario este seguro de querer hacerlo (cuando los datos esten correctos), es decir que se le presente una vista previa de los datos.

    he estado probando con los archivos de este tutorial y lo que he conseguido es ingresar datos en el formulario, pero al momento de querer guardarlos en la base de datos, no hace nada, lo unico que si se guardan son las imagenes en la base de datos y en una carpeta que le he asignado.

    No se si me explique o si es mucho pedir, pero podrian echarme una manita por favor, se que tienen muchas cosas que hacer y que su tiempo es muy importante, pero podrian orientarme o al menos decirme como podria solucionar este "problemita".

    Se que me echaran una mano y de antemano se los agradezco.

    Estoy trabajando con el AppServ (Apache-MySQL-PHP) bajo windows XP.

  129. hi:)

    amio pls soy nuevo en esto recien ando practicando si fueras tan ambale y me explicas como enlazar el codigo:(

  130. Hola: Tengo una duda porque quiero utilizar el formulario en varios idiomas y no consigo encontrar donde cambio los campos "examinar" y "borrar" cuando adjuntas archivos desde Internet explorer ó "seleccionar archivo" desde safari, supongo que debo definir el idioma en alguna parte pero ¿donde? gracias por todo

  131. necesito agregar o quitar campos de tipo de struts dinamicamente los campos son producto de una consulta a la base de datos asi necesito que este campo se replique: si alguien puede hacerme el favor de orientarme le agradesco mucho.

    ">

  132. necesito agregar o quitar campos de tipo html:select de struts dinamicamente los campos son producto de una consulta a la base de datos asi necesito que este campo se replique: si alguien puede hacerme el favor de orientarme le agradesco mucho.

    html:select property="menMenId"
    html:option value="" /html:option
    logic:iterate id="menMenIdBean" name="menMenIdList" scope="request" type="net.illustrato.quest.logicadominio.modelo.MenMenu"
    html:option value=""
    bean:write name="menMenIdBean" property="menNombre" /
    /html:option
    /logic:iterate
    /html:select

  133. Hola, me ha servido mucho el código, pero cuando envio imágenes de 15k en adelante, las imágenes llegan mal a los destinatarios, como si no cargaran por completo, llegan por pedazos
    ¿Me podrias ayudar?
    Gracias

  134. Hola

    disculpa que te moleste pero al parecer tu te manejas en el DOM de javascript la verdad es que tengo un problema.

    estoy creando una tabla que la estoy construllendo con el DOM, no tengo problema en crearla para internet explorer pero con mozilla y opera no me funciona lo que quiero hacer, ya que la tabla que estoy creanto tiene un tr que llama a una funcion de javacript este es el codig que estoy colocando, y me funciona para internet explorer.

    var tabla = document.createElement("TABLE");
    tabla.id = "tabla_datos";
    tabla.border = "0";
    tabla.width = "100%";
    tabla.align = "center";
    tabla.className = "Mtable2";
    tabla.setAttribute("cellspacing","0");
    tabla.setAttribute("cellpadding", "3");
    var _tabla = document.getElementById("tabla_datos");

    var tr = document.createElement("TR");
    //tr.bgcolor = "#FFFFFF";
    tr.id = pj_cod_1;
    tr.className = "fuente11_1";
    tr.onClick = "javascript: seleccionar4('"+pj_cod_1+"')";
    tr.onDblClick = "javascript: enviar_url('www.pvw.cl')";

    var td = document.createElement("TD");
    td.align = "center";
    td.width = "10%";
    td.height = "27";
    td.className = "fuente10";

    td.innerHTML = pj_cod_1;
    tr.appendChild(td);
    tabla.appendChild(tr);

    var padre = _tabla.parentNode;

    padre.replaceChild(tabla, _tabla);
    padre.innerHTML=padre.innerHTML+"";

    Las variables son de poca importancia ya que lo que me importa es saver por que en mozilla y opera no me funcionan.

    espero no causar muchas molestias.

    ATTE
    Claudio Santibañez

  135. Ya solucione mi problema y les mando la solucion :)

    tr.onClick = "javascript: seleccionar4('"+pj_cod_1+"')";

    tr.onDblClick = "javascript: enviar_url('www.pvw.cl')";
    tr.setAttribute("onclick","javascript:seleccionar4('"+pj_cod_1+"')");
    tr.setAttribute("onDblClick","javascript:enviar_url('www.pvw.cl')");

    coloque las dos formas y me toma en los 3 exploradores :)

    SL2

  136. buenas tardes caballeros, tengo la siguiente consulta, tengo un formulario de busqueda, que tambien es realizada a partir de unos selects en php, para ello utilizo un javascript que cumple la funciona de recoger los datos de los select y pegar en el textfield, para realizar la busqueda, mi consulta es la siguiente, como puedo hacer en el javascript para que cuando vuelva a seleccionar con el select, me borre lo anterior dejando el nuevo elemento seleccionado.
    este es mi javascript. desde ya muchas gracias

    function pegar(form_name,input_element, select_name){
    var result = 0;
    var f_n = 'document.'+ form_name + '.';
    var input_field = eval(f_n + input_element);
    var element = eval(f_n + select_name +'.options['+ f_n + select_name +'.selectedIndex].value');

    result = input_field.value + ' ' + element;
    input_field.value = result;

    }

  137. Hola,

    Acabo de configurar gmail en el outlook, recibo perfectamente todos los correos pero no puedo mandar ninguno desde el outloook, que puedo hacer???

    Gracias

    Alejandra

  138. Hola a todos...tengo un problema cl enviar los archivos, me sale que no se pudo enviar. Tengo alojados los archivos en mi servidor, y hace poco se hizo una actulaizacion y el script no es compatible con PHP 5.0.4. Que variable debo cambiar para que pueda enviar los archivos.

    Hace poco funcionaba muy bien...por favor agradezco me ayuden.

    Muchas gracias y saludos a todos.

  139. Pingback: www.programame.net
  140. hola soy nuevo en esto y tengo algunas preguntas para hacerte al respecto.

    Los archivos de ejemplos para descargar son distintos a los codigos que se colocaron?

    cuantos archivos debo crear y como se deben llamar para seguir tu ejemplo? nombre y extension?

    Sepuede poner una direccion fija a la cual lleguen los mails? yo me baje los archivos de ejemplo y los coloque en mi pagina funcionan correctamente pero lo que yo quiero saber si lo que estan haciendo acá es diferente a eso porque leí algunas preguntas que tambien quieren cambiar el destinatario y poner uno fijo y en los archivos de ejemplo no puedo encontrar donde cambiar lo que dicen que hay que cambiar ($mail->AddAdress).

    Desde ya agradezco muchisimo si pueden evacuar mis dudas.

    Bocha

  141. Los archivos de ejemplos para descargar son distintos a los codigos que se colocaron?

    Si, son los mismos.

    cuantos archivos debo crear y como se deben llamar para seguir tu ejemplo? nombre y extension?

    No sé a que te refieres con eso.

    Sepuede poner una direccion fija a la cual lleguen los mails? yo me baje los archivos de ejemplo y los coloque en mi pagina funcionan correctamente pero lo que yo quiero saber si lo que estan haciendo acá es diferente a eso porque leí algunas preguntas que tambien quieren cambiar el destinatario y poner uno fijo y en los archivos de ejemplo no puedo encontrar donde cambiar lo que dicen que hay que cambiar ($mail->AddAdress).

    Si, se puede poner una dirección fija, para mayores detalles revisa la documentación de PHPMailer.

    Saludos

  142. Como hago para agregar copia oculta "bcc", espero tu respuesta, muy bueno el formulario!!

  143. Primero que todo, esta muy bueno todo.
    Mi pregunta es: Si no quiero enviar el mail, sino guardarlo en la base de datos y sin archivo, solo el texto. Que debo hacer?

  144. Todo muy bueno, mi otra pregunta es: EN lugar de un INPUT, coloque un select, pero como puedo hacer para que ese select me aparezca ya con unos valores predeterminados.

  145. Me he permitido modificar el script para que la creacion de los campos files funcionen mediante un combo, aqui el script modificado:

    javascript:
    var numero = 0;
    var optionAnterior = 0;

    // Funciones comunes
    c= function (tag) { // Crea un elemento
       return document.createElement(tag);
    }
    d = function (id) { // Retorna un elemento en base al id
       return document.getElementById(id);
    }

    //esta función obtiene el número de campos a agregar/eliminar y resta o suma dependiendo
    //del número elegido en el combo y por lo tanto ejecuta la funcion correspondiente
    controlador = function (combo) {
        if(combo.value != 0){
           container = d('files');
            var optionActual = combo.selectedIndex;
            optionAnterior = container.childNodes.length;
            if(optionActual > optionAnterior){
                cantidad = optionActual-optionAnterior;
                agregarCampo(cantidad);   
            }else{
                cantidad = optionAnterior - optionActual;
                quitarCampo(cantidad);
            }
        }
    }

    //esta función se ejecuta cuando se quiere construir un campo file
    constructor = function (){
        span = c('SPAN');
           span.className = 'file';
           span.id = 'file' + (++numero);

           field = c('INPUT');   
           field.name = 'archivos[]';
           field.type = 'file';
    }

    //funcion para agregar un campo file
    agregarCampo = function(cantidadAdd){
        for(j=1;j<=cantidadAdd;j++){
             constructor();//llamada a constructor
            span.appendChild(field);
            container.appendChild(span);
        }
    }
    //funcion para eliminar un campo file
    quitarCampo = function(cantidadQt){
        for(k=1;k<=cantidadQt;k++){
            var borrarlo = container.lastChild;
            container.removeChild(borrarlo);
        }
    }
    //carga el número de valores que contendrá el combo
    //solo por pereza y para no tener que escribir cada uno con option
    loadNumFiles = function(idCampo,num){
        var img = document.getElementById(idCampo);
        for(i=1;i<=num;i++){
            img.options[img.options.length]=new Option(i,i);
        }
    }
     

    Y el ejemplo lo pueden ver aqui Ver ejemplo

  146. Hola, muchas gracias por el script Alex, muy util!
    sobre esto te queria pedir tu permiso para su uso en un componente de formularios para joomla, indicando en el apartado de administracion tu copyright.

    Muchas gracias!

    Para lluss:
    Para solucionar el problema de que te lleva al top de la pagina cambia " # " por " javascript:void(0); " (sin comillas ni espacios, y void(0) es cero) tanto en el codigo javascript (boton quitar) como en el html del boton agregar.

  147. InterJoomla, puedes usar el código de la manera que quieras -- el código no tiene nada en especial como para que me queje de algo. ;)

  148. Esta muy vacano el script, lo que no se es porque no me funciona, la parte que sube el archivo a una carpeta del servidor funciona perfectamente, pero el mail no lo envia, espero me pueda ayudar, no me saca error, que puedo hacer? mi correo es jaimebe@gmail.com, muchas gracias

  149. Hola

    exceletne el script, me ha fascinado

    pero quiero ver si tu podrias poner el codigo solamente para que el formulario envie los datos con las iamgenes a una base de datos, ojala sea el script modificado donde pones la cantidad de imagenes en un combo,

    yo no he podido hacerlo y llevo 2 semanas desentrañando tu codigo pero nada me resulta.

    estaria agradecido

    saludos

  150. no me envia el mail, me dice
    Could not instantiate mail function.
    No se pudo enviar el email

    no se como arrglarlo, me podrias dar un tip?

  151. Hola alex,

    Me gusto mucho tu código , pero quisiera saber si tienes la versión para los que somos usuarios de flash .

    Muchas gracias si me puedes ayudar.

  152. Alex, he visto que te preguntan ¿como agregar mas campos al formulario" y yo soy uno mas...
    Te agradeceria hasta la extenuacion si me indicases como hacerlo tu ejemplo me parece buenisimo pero no se como añadir mas campos al formulario y que me lleguen bien
    Necesito incluir campos como persona de contacto, numero de telefono etc... y no tengo ni idea
    Gracias anticipadas

  153. hola, he estado con tu ejemplo probandolo y la verdad entre que mis conocimientos son minimos de php, me funciona perfectamente pero quisiera que de salida salgan 2 casillas input tipo files, no dar la posibilidad de añadir mas adjuntos solo 2, y no tengo ni idea de como hacerlo.
    gracias

  154. Hola, quisiera preguntarte si es posible, hacer este envió no a una persona , si no a una base de datos de mysql, y de ser posible como tendrian que ser la s modificaciones

  155. Me puedes decir, cuales son las cosas negativas de esto.

    Tema tipo servidores, que se colapsan, los archivos demasiado grandes, que pasa con ellos.

    etc...

  156. Hola primero muy bueno el script
    quisiera saber como se podria hacer
    para que en el cuerpo del mail se conforme asi

    mensaje desde
    telefono:
    mail:
    apellido

    se que se hace mediante esto
    //Estoy recibiendo el formulario, compongo el cuerpo
    $cuerpo = "Enviado desde RNB Diseno.- \n";
    $cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
    $cuerpo .= "E-mail: " . $HTTP_POST_VARS["email"] . "\n";
    $cuerpo .= "Telefono: " . $HTTP_POST_VARS["telefono"] . "\n";
    $cuerpo .= "Mensaje: " . $HTTP_POST_VARS["mensaje"] . "\n";

    peo no se donde ponerlo

    gracias

  157. hola quisiera saber como componer el cuerpo del mail

    o sea poner

    telefono:
    mail:

    que me llegue asi el mail

  158. hola el formualrio me funciona barabro
    lo que quiero saber es como generar un cuerpo en el mensaje
    que recopile los datos de la persona

    nombre:
    mail:

    creo que se hace asi
    $cuerpo = "Enviado desde RNB Diseno.- \n";
    $cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
    $cuerpo .= "E-mail: " . $HTTP_POST_VARS["email"] . "\n";
    $cuerpo .= "Telefono: " . $HTTP_POST_VARS["telefono"] . "\n";
    $cuerpo .= "Mensaje: " . $HTTP_POST_VARS["mensaje"] . "\n";

    pero no se donde integrarlo

  159. Hola cuando activo la linea para el upload:
    move_uploaded_file($tmp_name, "../../libros/pdf/$name");

    me adjunta el archivo pero no me envia el mensaje,
    si no adjunto archivo me envia el mensaje.

    Como puedo solucionar este problema?
    Gracias.

  160. Hola Alexx, he visto tu formulario y me parece de lo mejor...soy nuevo en esto del php y he subido todos los archivos zip que incluistes al servidor, en aparciencia todo funciona bien pero no recibo el mail a mi correo electronico ni mucho menos sube al archivo al servidor.

    Agredeceria me ayudaras al respecto ya que he hecho todo lo que tu indicas en este sitio pero nada me ha funcionado el codigo que tengo es:

    Código Editado

    junto con los archivos class.phpmailer y class.smtp pero no funciona........

  161. Hola, espero me puedan ayudar, estoy tratando de hacer funcionar este formulario y no lo he logrado, esta es la información del entorno:

    1.- Windows Server 2003 R2
    2.- IIS
    3.- PHP 5.2.6 configurado con IIS
    4.- El root del www esta en c:\inetpub\wwwroot
    5.- PHP se instaló en c:\Archivos de programa\PHP
    6.- Los archivos del formulario class.phpmailer.php, class.smtp.php y uploader.php se colocaron en una carpella llamada "consultas" en el root del www
    7.- El formulario en internet se ejecuta en http://n3.com.mx:81/consultas/uploader.php

    Respecto al problema, cuando ejecuto el formulario se muestra el mensaje "No se pudo enviar el email" por arriba del campo de "para" y efectivamente no se procesa el mensaje correspondiente.

    Estoy empezando a trabajar con PHP asi que practicamente no se nada, quisiera saber si hay algún registro que me permita localizar el error o por donde es que debo empezar a buscar algun problema de configuración o en su defecto cuanquier ayuda que me puedan brindar.

    De antemano muchas gracias

  162. Felicitaciones. Quisiera conocer la manera que a la hora de crear un nuevo campo para subir un archivo, ademas se conforme un control tipo list/menu, la idea es que se suba el archivo y a la vez se puede optar (ej) si es para el departamento administracion o el departamento comercial.

  163. Hola Alex... nuevamente te escribo para solicitarte los codigos que incluyen mas campos al script, incluyendo un list/menu con sus valores. Desde ya muy agradecido. mi correo es rafael.garau[@]gmail.com.

  164. Hola qué tal, muy bueno el tutorial, me gustaria qué nos enseñaras a ponerle un captcha al formulario, como el qué tienes en el ejemplo ...
    Seria muy util de verdad, por eso del spam, nunca faltan los trolls... Gracias.

  165. Hola qué tal, muy bueno el tutorial, me gustaria qué nos enseñaras a ponerle un captcha al formulario, como el qué tienes en el ejemplo, aparte qué quiero aprender a usar captchas...

    Seria muy util de verdad, por eso del spam, nunca faltan los trolls, estan por todas partes.

    Gracias por el tutorial me sirvio mucho...

  166. kisiera ver si alguien me puede ayudar en como poner una plantilla con mi foto en hispanito o en hi5 por favor desde ya muchas gracias besos paola....

  167. Buenas tardes desde chile,

    me funciona bien el codigo, me envia el maily el archivo adjunto pero me cambia el nombre del archivo, agregandole "basura" al comienzo de éste.

    Reugo alguna posible causa y sobre todo posible solución

    de antemano gracias

  168. Alex, ya he logrado todo, inclusive puedo agregar mas campos que es lo que me venía andando mal, ahora a mi no me gustaría que me dijerna mensaje enviado y me detalle los archivos ahi sino que al enviar me fuera a una pagina de resultado por ej. un gracias.php .. no me doy cuenta donde hay que poner el header("Location: actualizaciones2.php"); y en ese caso debo quitar algo? por ej para que no me apareciese lo deenviado y los archivos sino que directamente me lleve a la pagina de resultado..

    un abrazo grande

  169. Cuando necesitaba enviar más de una foto, iba a adjuntar y me aparecia abajo "archivo y Foto" Pinchaba foto y me iba a una carpeta donde podia seleccionar varias fotos. Ahora al pinchar adjuntar, no me aparece la indicación de archivo y foto, por lo que no me permite elegir. Me lleva directo a una carpeta donde solo me permite enviar fotos de a una. Que puedo hacer para volver a la forma anterior ???? Mucho agradeceré me ayude!!!
    GRACIAS !!!!!!!!!!

  170. Hola Alex, subi los archivos "uploader.php, class.smtp.php y class.phpmailer.php" e hice una prueba de envio. En principio va todo bien, lleno el formulario con los datos, selecciono el archivo que deseo adjuntar, y oprimo el boton ENVIAR. Al rato aparece una leyenda en la parte superior de la pagina que dice:

    Mensaje Enviado
    * 1191409786_image005.jpg

    El problema es que nunca llega nada, ni el mail ni obviamente el adjunto.

    Me podras decir que puede estar pasando.
    Desde ya Gracias

    Gallo

  171. Hola a todos y felicidades a Alex aunque no sé si estarás por aquí... ya que el script lo publicaste junio del 2005. 4 años!! Funciona de puta madre, el único problema que tengo es que: o manda el email o sube el archivo al servidor, pero no consigo que haga las dos cosas a la vez. Alguna sugerencia? Muchas gracias

  172. Alex:
    Primero, decirte que es un excelente script, me funciona perfecto. Mi consulta es: en tu ejemplo tienes un captcha, pero aunque no lo agregue se envía el formulario; he intentado agregarle el captcha pero de todas formas se lo salta, es decir, lo escriba o no.

    Te agracería, si no es molestia, me indicaras en donde y cómo debo agregarlo en el script.

    Desde ya, muchas gracias por tu atención

  173. buenas tardes,

    Necesito ayuda con urgencia,hice un index, y al enviarlo por correo nadie lo puede ver, a modo que le envie la carpeta de imagenes, mi pregunta es, debo subir el index a un hosting y recien ahi podre solo mandar el index por correo y el destinatario podra verlo? o hay alguna otra forma sin tener que subir el index (htlm) para que cuando lo envie por correo, el que lo descarga puedo abrirlo?

    porfa ayuda...

    saludos a todos!

  174. Hola ALEX, muy agradecido por la info y conocimientos compartidos, soy NOVATO en sto me gustaria q me envias a mi correo los archivos CORREGIDOS de poder Adjuntar Varios Archivos y como es sobre crear una tabla enla BD reigistrar la referencia o direcion del archivo, spero no causarte molestias, desd ya mu agradecido

  175. Hola, gracias el script me funciono perfecto, pero tengo una duda yo tengo un servidor donde puedo guardar archivos, como seria posible guardar los adjuntos en dicho servidor y enviar adicionalmente el link en el mensaje para que lo descarguen

    y muchas gracias por tu ayuda :)

  176. Hola gracias por el script , lo estoy usando , pero me da un error cuando lo quiero correr en firefox, desde google crome y safari funciona perfecto. pero en firefoz se queda esperando respuesta del servidor, tenes idea que peude ser? muchas gracias

  177. Excelente el script, lo necesitaba urgente, sólo tengo un problema, necesito validar los datos, es decir, que si llenaron los campos antes de enviar, esto lo se hacer poniendo un onClick en el botón enviar, pero luego no sé como darle "submit", te agradezco la ayuda!

Comments are closed.