Foros del Web » Programando para Internet » PHP »

Tengo 1script de formulario para enviar email q va perfecto xro me faltan ls adjuntos

Estas en el tema de Tengo 1script de formulario para enviar email q va perfecto xro me faltan ls adjuntos en el foro de PHP en Foros del Web. Hola, hace años que utilizo el mismo script, son unas lineas de código que son un formulario de contacto que se envia por email. Va ...
  #1 (permalink)  
Antiguo 04/08/2011, 06:10
 
Fecha de Ingreso: junio-2007
Ubicación: En mi casa
Mensajes: 82
Antigüedad: 16 años, 9 meses
Puntos: 2
Tengo 1script de formulario para enviar email q va perfecto xro me faltan ls adjuntos

Hola, hace años que utilizo el mismo script, son unas lineas de código que son un formulario de contacto que se envia por email. Va perfecto y es muy simple de utilizar. Lo puedes pegar en cualquier página que tengas en html y entonces lo renombras en php y ya tienes el formulario sin complicaciones, además, una vez le das a enviar, te vuevle a aparecer la misma pagina con el mensaje "se ha enviado correctamente" aunque puedes modificarlo y poner cualquier cosa en html.

Por lo que no necesitas una segunda pagina en php de destino despues de haber enviado el formulario.

El tema esta en que ahora me gustaria poner un campo de formulario de upload, para poder subir algun archivo y que se envie como adjunto en el email, pero no se como hacerlo. Seguramente sea solo una linea que se tenga que modificar, he buscado por cientos de foros y no encentro la solución, ya que cada sitio lo hace distinto...

El código es este:

Código PHP:

<?php

$mail_destinatario 
'[email protected]';


if (isset (
$_POST['enviar'])) {
$headers .= "From: ".$_POST['email']. "";
if ( 
mail ($mail_destinatario$_POST['nom'], "Disseny Botiga Online\nNom : ".$_POST['nom']." \nNom de la web: ".stripcslashes ($_POST['web'])." \nDomini: ".stripcslashes ($_POST['domini'])." \nCategories:\n".stripcslashes ($_POST['categories']), $headers )) echo '

<b><font size="3">El seu missatge ha estat enviat correctament. En breu rebra la nostra resposta.</font></b><br><br>

'


else echo 
'

Error al enviar el formulario. Por favor, inténtelo de nuevo mas tarde.

'
; } 

echo 
'
<form action="?" method="post"> 

<label for="nom"><b><font size="3">Nom</font></b></label><br><input type="text" name="nom" size="50""><br> 
<br><label for="email"><b><font size="3">Email</font></b></label><br><input type="text" name="email" size="50"><br> 
<br><label for="web"><b><font size="3">Nom de la web</font></b></label><br><input type="text" name="web" size="50"><br> 
<br><label for="domini"><b><font size="3">Categories</font></b></label><br><input type="text" name="categories" size="50"><br>

<label for="enviar">
<input type="submit" name="enviar" value="Enviar consulta"></label>
</form>

'
;
?>
Si por ejemplo, creo un campo de formulario de subida de archivo y que la variable se llame "archivo", en que parte del código de php lo tendría que poner?

Muchas gracias
  #2 (permalink)  
Antiguo 04/08/2011, 06:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Para poder añadir los adjuntos tienes que indicar que tipo de mime vas a enviar, indicar las cabeceras correspondientes, añadir el código binario y tal vez otras cosas más, mira este ejemplo para que te dejes llevar http://www.texelate.co.uk/blog/send-...ment-with-php/. Si no deseas pasar trabajo puedes usar alguna librería como phpmailer o zend_mail que te hacen el trabajo por ti.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 04/08/2011, 07:11
 
Fecha de Ingreso: junio-2007
Ubicación: En mi casa
Mensajes: 82
Antigüedad: 16 años, 9 meses
Puntos: 2
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Hola, muchas gracias por tu respuesta, pero me extraña que sea tan complicado todo esto, si por ejemplo tengo en el formulario esto:

<p><input type="file" name="archivos" size="20"></p>

No habría ninguna variable o linea de códiga para añadir en el códio del script para cojer la variable del archivo y adjuntarla directamente en el email?

Al estilo la variable email, o asunto del email...

Me cuesta creer que sea tan complicado!
  #4 (permalink)  
Antiguo 04/08/2011, 07:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Bueno el que te dirá entonces la verdad es google
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 04/08/2011, 07:31
 
Fecha de Ingreso: junio-2007
Ubicación: En mi casa
Mensajes: 82
Antigüedad: 16 años, 9 meses
Puntos: 2
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Ufff, pues parece realmente complicado, la verdad es que no se ni como empezar, es una lástima que lo hagan tan complicado cuando con las variables del email que van al remitente y en el asunto es super simple...

¿Porque lo hacen tan complicado con los adjuntos?
  #6 (permalink)  
Antiguo 04/08/2011, 07:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

No es que se hace complicado, es que es así, lo que pasa es que las herramientas que usas lo hacen simple para el usuario.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 04/08/2011, 07:36
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Soy muy policia si digo que el título es un desastre?
  #8 (permalink)  
Antiguo 04/08/2011, 07:39
 
Fecha de Ingreso: junio-2007
Ubicación: En mi casa
Mensajes: 82
Antigüedad: 16 años, 9 meses
Puntos: 2
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Gracias por todas tus respuestas, lo que pasa es que mi nivel de php es bastante simple, y siempre utilizo el código de formulario de contacto de arriba para enviar los formularios de contacto en páginas en html (habitualmente uso Wordpress y desde alli creas todos los formularios que quieres con el ContactForm7 que va genial).

Pero con webs en html es mas complicado, he visto un montón de códigos diferentes, pero son complicados de entender para alguien que no tenga demasiados conocimientos, y el que puse arriba a mi parecer es el mejor, ya que además no necesita que crees otro archivo de página para redireccionar al usuario una vez envie el formulario, ya que se reescribe la misma página con el mensaje "ha sido enviado correctamente" aunque esto se puede modificar incluso añadiendo codigo html.

El tema es que por mucho que leo páginas donde explican como añadir adjuntos, no logro saber como podría hacerlo con este código, no soy capaz de ver exactamente que código tendría que añadirle, tampoco veo que haya una forma estándar de referirse a una variable del campo de formulario del archivo y vincularla como adjunto en un email :S
  #9 (permalink)  
Antiguo 04/08/2011, 07:40
 
Fecha de Ingreso: junio-2007
Ubicación: En mi casa
Mensajes: 82
Antigüedad: 16 años, 9 meses
Puntos: 2
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Cita:
Iniciado por ramiro_md Ver Mensaje
Soy muy policia si digo que el título es un desastre?
El título lo tuve que acortar porque no me cabía la información mas relevante.
  #10 (permalink)  
Antiguo 04/08/2011, 07:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Te recomiendo que pases por el wiki de este foro, para que puedas desenvolverte y luego poder lograr lo que deseas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 04/08/2011, 07:42
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

En realidad no es complicado como lo dice abimaelrc, PHP lo hace simple, el verdadero problema esta con los servidores de correo, ya que estos utilizan protocolos y cabeceras diferentes para cada situación.

Al ser estándares y protocolos PHP debe buscar la forma de cumplir con estos para poder realizar dicho envío, nosotros no lo vemos porque los gestores de correo ya sean web o de escritorio hacen dicho trabajo mandando cabeceras y todas esas cosas, pero como nosotros estamos desarrollando la aplicación entonces debemos colocar todos esos códigos.

Antes debemos ser agradecidos que PHP tenga todas esas funciones para poder enviar dichos correos.

Así que el problema no es PHP sino los estándares y protocolos que se complican la vida para recibir un archivo adjunto en los servidores de correo.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #12 (permalink)  
Antiguo 04/08/2011, 07:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Yo no dije que fuera complicado , indiqué el proceso que tiene que hacer para que el servidor que reciba el correo lo pueda ver como un adjunto. Por eso mencioné unas librerías para que se le haga el proceso aún más simple.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #13 (permalink)  
Antiguo 04/08/2011, 07:54
 
Fecha de Ingreso: junio-2007
Ubicación: En mi casa
Mensajes: 82
Antigüedad: 16 años, 9 meses
Puntos: 2
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Pero entonces porque es tan simple enviar un formulario por email con datos de texto y tan complicado enviar un solo adjunto???

No hay ninguna linea de codigo que pueda añadir al principio del script, donde se encuentran las variables del remitente, o el asunto, para coger la variable del archivo y enviarla como adjunto directamente???
  #14 (permalink)  
Antiguo 04/08/2011, 07:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Ya te han dado las razones, analizalas por favor y si quieres enviar adjuntos se te han dado ejemplos. No veo porque sigues con la duda, es como si quisieras que PHP hiciera magia al enviar los archivos
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 04/08/2011, 08:05
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Cita:
Iniciado por abimaelrc Ver Mensaje
Yo no dije que fuera complicado , indiqué el proceso que tiene que hacer para que el servidor que reciba el correo lo pueda ver como un adjunto. Por eso mencioné unas librerías para que se le haga el proceso aún más simple.

Yo en ningun momento he dicho que digas que es complicado, por favor lee detenidamente...

En realidad NO es complicado como lo dice abimaelrc...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #16 (permalink)  
Antiguo 04/08/2011, 08:06
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

OOhhhh, es que como no colocaste una coma, parece que dijeras que no es complicado como dice abimael, perdon jejeje
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #17 (permalink)  
Antiguo 04/08/2011, 08:10
 
Fecha de Ingreso: junio-2007
Ubicación: En mi casa
Mensajes: 82
Antigüedad: 16 años, 9 meses
Puntos: 2
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Os prometo que investigaré sobre el tema

Y cuando lo solucione volveré a este post

Muchas gracias a todos y disculpad toda mi ignorancia en estos temas.
  #18 (permalink)  
Antiguo 04/08/2011, 08:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

En el mismo manual de PHP tienes un ejemplo (http://mx.php.net/manual/en/features...ost-method.php) de como subir archivos al servidor.

El siguiente paso es codificar tu mail y el archivo al formato MIME que soporta los clientes de correo y enviarlo.

O puedes tomar la ruta fácil y usar PHPMailer que tiene un método muy sencillo addAttachment() que hace todo ese trabajo por ti, si buscas un poco en Google vas a poder ver como es sencillo usar PHPMailer.

Saludos.
  #19 (permalink)  
Antiguo 04/08/2011, 09:50
 
Fecha de Ingreso: junio-2007
Ubicación: En mi casa
Mensajes: 82
Antigüedad: 16 años, 9 meses
Puntos: 2
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Hola, pero en estos ejemplos sale como subir el archivo en el servidor, no como adjunto en el formulario de envio en un email...
  #20 (permalink)  
Antiguo 04/08/2011, 09:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Porque antes de enviar como adjunto tienes que subir el archivo al servidor y luego atacharlo en el mail.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #21 (permalink)  
Antiguo 04/08/2011, 10:18
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Yo tengo una función que utilizo para enviar correos en texto plano con archivos adjuntos, no se si exista algún problema en ponerla aquí, la encontré en algun lado pero no recuerdo donde, y la adapté a mis necesidades, sería cuestión de que la adaptaran a como la ocupen.
  #22 (permalink)  
Antiguo 04/08/2011, 12:19
 
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan

Aqui te vá un código, para que envíes un archivo adjunto por email:

Código PHP:
<?php 
extract
($_POST); //Extrae todas las variales enviadas por POST esto nos ayuda a usar p.e. $nombre en vez de usar $_POST['nombre']
?>
<html>
<head>
<title>Enviar archivo adjunto por email</title>
</head>

<body>
<?php
if ($_POST) {
    
/* Datos de Envio */
    
$para"[email protected]"// email a donde se enviará los datos del formulario
    
$asunto="$subject MENSAJE CON ARCHIVO ADJUNTO";
    
$desde stripslashes($_POST['nombre'])."<".stripslashes($_POST['email']).">";
    
$mensaje "<div>
                  <p>Nombre: $nombre</p>
                  <p>Email: $email</p>
                </div>"
;
    
/* generar una cadena aleatoria que se utiliza como marcador de límite */
   
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"//Este se utilizará al construir las cabaceras y cuerpo del mensaje
   /* almacenar la información del archivo en variables para un acceso más fácil */
   
$tmp_name $_FILES['attach']['tmp_name']; //Nombre temporal del archivo
   
$type $_FILES['attach']['type']; //Tipo de formato del archivo
   
$name $_FILES['attach']['name']; //Nombre del archivo
   
$size $_FILES['attach']['size']; //Tamaño del archivo
   
   
   
$message $mensaje// coloco en una variable los datos del mensaje;

   /* si el archivo existe, la carga tuvo éxito  */
   
if (file_exists($tmp_name)){
      
// asegura de que se trata de un archivo cargado y no un archivo de sistema
      
if(is_uploaded_file($tmp_name)){
         
// abre el archivo para una lectura binaria
         
$file fopen($tmp_name,'rb');
         
// leer el contenido del archivo en una variable
         
$data fread($file,filesize($tmp_name));
         
// cierra el archivo
         
fclose($file);
         
// ahora tenemos que codificar
         
$data chunk_split(base64_encode($data));
      }
    
   }

      
/* Ahora vamos a construir las cabeceras del mensaje */
      
$headers "From: $desde\r\n" .
         
"MIME-Version: 1.0\r\n" .
         
"Content-Type: multipart/mixed;\r\n" .
         
" boundary=\"{$mime_boundary}\"";

      
/* vamos a construir el cuerpo del mensaje */
      
$message "This is a multi-part message in MIME format.\n\n" .
         
"--{$mime_boundary}\n" .
         
//"Content-Type: text/plain; charset=\"iso-8859-1\"\n" . /* Si deseamos enviar el mensaje como texto plano utilizamos esta linea*/
         
"Content-type: text/html; charset=iso-8859-1\r\n" .
         
"Content-Transfer-Encoding: 7bit\n\n" .
         
$message "\n\n";

      
// ahora vamos a introducir un límite para indicar que estamos empezando el archivo adjunto
      // tenemos que especificar el tipo de contenido, el nombre del archivo y la disposición como
      // un archivo adjunto, a continuación, añadir el contenido del archivo y establecer otro límite que
      // indica que el final del archivo se ha alcanzado
      
$message .= "--{$mime_boundary}\n" .
         
"Content-Type: {$type};\n" .
         
" name=\"{$name}\"\n" .
         
//"Content-Disposition: attachment;\n" .
         //" filename=\"{$fileatt_name}\"\n" .
         
"Content-Transfer-Encoding: base64\n\n" .
         
$data "\n\n" .
         
"--{$mime_boundary}--\n";

      
// Ahora enviamos el mensaje
      
if (@mail($para$asunto$message$headers))  {
          echo 
'<div style="padding:7px;color:#0000FF">Mensaje enviado correctamente</div>';
      }else{
          echo 
'<div style="padding:7px;color:#FF0000;">ERROR: El mensaje No se pudo enviar</div>';
      }
}
?>
<form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
  <div>Archivo adjunto: 
    <input name="attach" type="file" id="attach" />
  </div>
  <div>Nombre: 
    <input type="text" name="nombre" />
  </div>
  <div>Email: 
    <input type="text" name="email" />
  </div>
  <div><input type="submit" name="Submit" value="Enviar"></div>
</form>
</body>
</html>
Espero te sirva.
Saludos.

Última edición por GatorV; 04/08/2011 a las 13:39

Etiquetas: adjuntos, email, html, perfecto, formulario, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:07.