[Duda] Formulario PHP

Iniciado por oscarj24, 6 Julio 2010, 00:28 AM

0 Miembros y 1 Visitante están viendo este tema.

oscarj24

Hola a todos ::), estaba haciendo un formulario en php que envia datos y una imagen adjunta a un email, quisiera que me ayudaran ya que sigo teniendo errores y el problema creo que esta en el archivo a subir

Ejemplo:

En mi form tengo varias validaciones

if condicion
   elseif
      elseif
          elseif
else

y aqui es donde enviaria el mail si cumple todas las validaciones, el codigo es el siguiente:

Código (php) [Seleccionar]
else{
//Abre y lee la imagen.
$adjunto = fopen($FILES['voucher']['name'], 'r');
$contenido = fread($adjunto, filesize($FILES['voucher']['name']));
$encoded_attach = chunk_split(base64_encode($contenido));
fclose($adjunto);
//Se recogen los datos del formulario para montar el cuerpo del mensaje.
$mensaje ="- Nombres: $nombres\n";
$mensaje .="- Apellidos: $apellidos\n";
$mensaje .="- DNI o Carne de Extranjeria: $DNI_CarneExtranjeria\n";
$mensaje .="- Tipo Persona: $tipo_persona\n";
// Se monta la cabecera del mensaje.
$cabeceras = "From:<$mail_service>\n";
// Si se requiere "Reply-To" usar: $cabeceras .= "Reply-To:$correo \n";
$cabeceras .= "MIME-version: 1.0\n";
//Se establecen las otras cabeceras del mensaje.
$cabeceras .= "Content-type: multipart/form-data; ";
$cabeceras .= "boundary=\"Message-Boundary\"\n";
$cabeceras .= "X-attachments:".$adjunto;
$cabeceras .= "Content-transfer-encoding: 7BIT\n";
//Se configuran las propiedades del cuerpo del mensaje
$body_top = "--Message-Boundary\n";
$body_top .= "Content-type: text/plain;charset=US-ASCII\n";
$body_top .= "Content-transfer-encoding: 7BIT\n";
$body_top .= "Content-description: Mail messagebody\n\n";
//Se establece el cuerpo del mensaje.
$cuerpo = $body_top.$mensaje;
//Se adjunta la imagen al cuerpo del mensaje.
$nombre_file = $FILES['voucher']['name'];
$cuerpo .= "\n\n--Message-Boundary\n";
$cuerpo .= "Content-type: Binary;name=\"$nombre_file\"\n";
$cuerpo .= "Content-Transfer-Encoding: BASE64\n";
$cuerpo .= "Content-disposition: attachment;filename=\"$nombre_file\"\n\n";
$cuerpo .= "$encoded_attach\n";
$cuerpo .= "--Message-Boundary--\n";
//Se establece la direccion de correo de destino.
$destino = "emaildestino@hotmail.com";
//Se ejecuta la funcion mail PHP.
mail($destino,$asunto,$cuerpo,$cabeceras);
echo 'envio exitoso';
}


Y el problema que tengo es el siguiente:

Me aparecen estos errores...

Código (php) [Seleccionar]
Warning: fopen() [function.fopen]: Filename cannot be empty in /home/miweb/public_html/inscripciones/mail.php on line 195

Warning: fread(): supplied argument is not a valid stream resource in /home/miweb/public_html/inscripciones/mail.php on line 196

Warning: fclose(): supplied argument is not a valid stream resource in /home/miweb/public_html/inscripciones/mail.php on line 198

envio exitoso.


Lo que sucede ahora es que el mail se envia y llega de la siguiente forma:


Como veran el adjunto llega totalmente diferente (como si se subiera el temporal o algo asi) y ademas, pesa 0 Kb.

Espero me puedan ayudar, ya he intentado varias cosas y nada  :-\

Gracias!!

bomba1990

bueno lo primero es que segun lo que estas m ostrando es que lo que estas mandadno a leer no existe y el sistema no lo puede leer. deberias hacer una comprobacion primero para sabr si existe el archivo, y segundo hay algo raro en tu mensaje cuando llegue a mi casa leo mejor y te digo si son ideas mias o que.
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

oscarj24

ya lo logre hacer, preferi usar la clase phpmailer... gracias de todas formas  ::)