Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/02/2009, 08:41
Avatar de pempas
pempas
 
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 21 años, 2 meses
Puntos: 6
Leer body de email con imap_fetchbody

Buenas,

Soy bastante nuevo en Php, puesto que vengo de .net así que estoy bastante perdido intentado leer un email mediante php.

El tema es que ya he conseguido sacar el listado y consultar el mailbox (POP3), pero ahora quiero intentar leer el body del email, con sus adjuntos y demás, pero solo he conseguido leerlo en texto plano y me gustaría que el mensaje tuviese el aspecto original.

Me estoy fijando en esta función para ello http://es.php.net/manual/es/function.imap-fetchbody.php

El código que tengo echo es este:

Código PHP:
$mbox conectabuzon(); // Esta función conecta al buzón
 
  
$structure imap_fetchstructure($mbox,trim($_GET["id"]));
  if(
$structure->type == 1)
  {
  
// YES
   
echo nl2br(utf8_encode(imap_fetchbody($mboxtrim($_GET["id"]), "1.2")));
  } else {
  
// NO
   
echo nl2br(utf8_encode(imap_fetchbody($mboxtrim($_GET["id"]), "1")));
  }
 
  @
imap_close($mbox); 
Uno de los problemas que tengo es que esta línea:

Código PHP:
imap_fetchbody($mboxtrim($_GET["id"]), "1.2"
Muchas veces no me devuelve el body del mensaje y otras sí, no sé porque.

He estado ojeando los ejemplos de la página oficial de php, pero sinceramente, no me aclaro nada... e visto funciones para sacar un array con los tipos de adjunto que tiene el mensaje, y demás, pero no sé combinarlas...

Este correo sí me da respuesta con la opción "1.2", pero no sé "despiezarlo ahora":

Código PHP:
--------------090205000809040705040901
Content
-Typetext/htmlcharset=ISO-8859-1
Content
-Transfer-Encoding7bit
 
 
 
 
Dentro y fuera
...
 
 
 
-- 
 
cid:part1.08010809.00030602@dominio.com  <-- Esto se supone que es la imagen adjunta en el email
 
 
 
--------------090205000809040705040901
Content
-Typeimage/jpeg;
name="firma.jpg"
Content-Transfer-Encodingbase64
Content
-ID
Content-Dispositioninline;
filename="firma.jpg"
 
/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVj.....
 
Todo lo de arriba es el código del adjuntoque es una imagen de autofirma... (firma.jpg), no lo pongo todo porque es mucho código binario...
 
--------------
090205000809040705040901-- 
Por ejemplo en ese caso, el email tiene una imagen adjunta en el cuerpo, pero no sé tampoco averiguar cuales son las adjuntas en el body y cuales son los attachment separados...

Espero que me haya explicado bien porque esto me está mareando demasiado ya, a ver si algun alma caritativa puede darme una mano y enseñarme como lo tengo que hacer.

Mil gracias!