Foros del Web » Programando para Internet » PHP »

Input file a mi correo

Estas en el tema de Input file a mi correo en el foro de PHP en Foros del Web. Hola a todos; He hecho un formulario en el que tengo un input file, y quiero que los datos que se introducen en el formulario ...
  #1 (permalink)  
Antiguo 25/07/2009, 20:11
 
Fecha de Ingreso: julio-2009
Mensajes: 19
Antigüedad: 14 años, 9 meses
Puntos: 0
Input file a mi correo

Hola a todos;

He hecho un formulario en el que tengo un input file, y quiero que los datos que se introducen en el formulario se me envien al correo.
El problema es que llegan las entradas de texto pero los archivos insertados no. El codigo es el siguiente:

Código PHP:
<?php

$mail
='direccion mail';



$colegio $_POST['colegio'];
$foto $_POST['foto'];
$comentario $_POST['comentario'];

$thank="index.html";

$message "

colegio:"
.$colegio."
foto:"
.$foto."
comentario:"
.$comentario."";

if (
mail($mail,"titulo mens",$message))
Header ("Location: $thank");

?>


Código HTML:
 <form name="form1" method="post" action="enviar2.php"   enctype="multipart/form-data" accept-charset="utf-8">

          <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> 

<select name="colegio" id="colegio"> [I]y las opciones[/I]

<td colspan="2"><input type="file" name="foto" id="foto" /></td>

<td colspan="2"><br/><label>
<textarea name="comentario" cols="38" rows="5" id="comentario"></textarea></label></td>
<td class="submission" colspan="3"><input type="submit" name="s" value="Aceptar" /></td>

          </form> 

¿Qué hago mal?!!!!
  #2 (permalink)  
Antiguo 25/07/2009, 20:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Input file a mi correo

Te recomiendo usar PHPMailer tiene métodos para poder agregar archivos a tu correo de forma sencilla.

Saludos.
  #3 (permalink)  
Antiguo 27/07/2009, 14:13
 
Fecha de Ingreso: julio-2009
Mensajes: 19
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Input file a mi correo

¿No existe otra manera más sencilla?, es que me lo he bajado y no entiendo na
  #4 (permalink)  
Antiguo 27/07/2009, 14:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Input file a mi correo

De hecho la otra forma es más complicada ya que tienes que codificar el archivo usando Base64 de preferencia, luego crear las cabeceras MIME y codificar tu correo, aquí tienes un ejemplo de como hacerlo con un archivo:
Código php:
Ver original
  1. <?php
  2. // Para quien es el email
  3. // Subject
  4. $subject = 'Ejemplo de Email con Attachment';
  5. // Este es el boundary para separar los correos, debe de ser aleatorio
  6. $random_hash = md5(date('r', time()));
  7. // Definir las cabeceras basicas separadas por \r\n
  8. $headers = "From: [email protected]\r\nReply-To: [email protected]";
  9. // Agregar que es un mail mixto y el separador
  10. $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
  11. // Lees y agregas el archivo que hayas subido
  12. $attachment = chunk_split(base64_encode($_FILES['archivo']['tmp_name']));
  13. // Crear el correo con las cabeceras
  14. ?>
  15. --PHP-mixed-<?php echo $random_hash; ?>
  16. Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>"
  17.  
  18. --PHP-alt-<?php echo $random_hash; ?>
  19. Content-Type: text/plain; charset="iso-8859-1"
  20. Content-Transfer-Encoding: 7bit
  21.  
  22. Texto sin HTML (cuerpo del mensaje)
  23.  
  24. --PHP-alt-<?php echo $random_hash; ?>
  25. Content-Type: text/html; charset="iso-8859-1"
  26. Content-Transfer-Encoding: 7bit
  27.  
  28. <h1>Aqui va el mail pero con HTML</h1>
  29.  
  30. --PHP-alt-<?php echo $random_hash; ?>--
  31.  
  32. --PHP-mixed-<?php echo $random_hash; ?>
  33. Content-Type: application/zip; name="archivo.ext"
  34. Content-Transfer-Encoding: base64
  35. Content-Disposition: attachment
  36.  
  37. <?php echo $attachment; ?>
  38. --PHP-mixed-<?php echo $random_hash; ?>--
  39.  
  40. <?php
  41. // Obtienes el mail usando ob_get_clean();
  42. $message = ob_get_clean();
  43. // Se envia el correo
  44. if (mail( $to, $subject, $message, $headers )) {
  45.     echo "Envio exitoso";
  46. } else {
  47.     echo "Error al enviar el Mail";
  48. }

Como ves el codificar el correo es más complicado a si usas PHPMailer que tiene métodos para hacerlo de forma más sencilla.

Saludos.
  #5 (permalink)  
Antiguo 29/07/2009, 15:48
 
Fecha de Ingreso: julio-2009
Mensajes: 19
Antigüedad: 14 años, 9 meses
Puntos: 0
El archivo de phpmailer-fe tiene 1667 líneas, y esta dividido en includes, constants y functions. Me parece entender que debes elegir sólo las que te interesan, en mi caso ¿Cuales debo usar?

Creo que esta función podría ser:


mail_it (line 1271)

Function to mail the content
void mail_it (string $content, string $subject, string $email, string $realname, string/array $recipient, [mixed $inbound = true])

* string $content
* string $subject
* string $email: (from email)
* string $realname: (from name)
* string/array $recipient: (to)

O sólo hay que configurar el default.config.php y dejar el banlog.php y el phpmailer-fe.php tal como vienen...

Última edición por GatorV; 29/07/2009 a las 21:28
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 18:35.