Foros del Web » Programando para Internet » PHP »

Leer body de email con imap_fetchbody

Estas en el tema de Leer body de email con imap_fetchbody en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/02/2009, 08:41
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 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!
  #2 (permalink)  
Antiguo 21/02/2009, 11:29
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Leer body de email con imap_fetchbody

Pempas:

Esto ->

Cita:
imap_fetchbody($mbox, trim($_GET["id"]), "1.2")
Es mejor que utilices en vez de "1.2" solo "1".
Para comprender eso bien creo debes hacer lo siguiente:
$x =imap_fetchbody($mbox, trim($_GET["id"]), "1.2");
print_r($x);
Este array te va a dar una radiografias del cuerpo.

Referente los adjuntos, existen los INLINE adjuntos
y los ATTACHMENT adjuntos

Para poder visualizar en detalle debes hacer lo mismo
de arriba ->
$structure = imap_fetchstructure($mbox,trim($_GET["id"]));
print_r($structure);
(Logicamente es recomendable que lo hagas con un correo que contenga INLINE adjuntos y ATTACHMENTS adjunto)

Saludos
Franco
  #3 (permalink)  
Antiguo 23/02/2009, 03:15
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
Respuesta: Leer body de email con imap_fetchbody

Vaya,

Muchas gracias Franco, no sabía que ese comando mostrara así los array, lo estudiaré y veremos si me aclaro mejor.

Muchas gracias!
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 04:42.