Obtener cuerpo de un mensaje con PHP
Cuando recuperamos mensajes de un servidor de correo tendremos dos partes, por un lado obtendremos un resumen con el tema de mensaje e información de la persona que lo envía y en un segundo paso tendremos el contenido del mensaje. En este ejemplo vamos a obtener cuerpo de un mensaje con PHP. Para ello lo primero que haremos será conectarnos vía imap al servidor de correo mediante la función imap_open(). A la función imap_open() le pasamos el nombre del servidor, el usuario y la contraseña del mismo para poder conectarse.
$hostname = '{mail.correo.com/notls}INBOX';$username = 'test@correo.com';$password = 'password';
$inbox = imap_open($hostname,$username,$password) or die('Ha fallado la conexión: ' . imap_last_error());Una vez que nos hemos conectado al servidor de correo deberemos de recuperar los emails de uno de los buzones, en este caso vamos a recuperar todos los emails del buzón principal utilizando la función imap_search().
$emails = imap_search($inbox,'ALL');En la variable $emails tendremos todos los emails del buzón principal. Ahora vamos a obtener el cuerpo de uno de los mensajes, en concreto, y a modo de ejemplo lo haremos del primer mensaje. La función que nos ayuda a obtener cuerpo de un mensaje con PHP es imap_fetchbody(). Esta función recibe cuatro parámetros:
imap_fetchbody($stream_correos, $numero_mensaje, $seccion, $opciones);El $stream_correos son todos los emails obtenidos mediante imap_search(), $numero_mensaje es el número de mensaje dentro de la lista, el primer número será el 1. Con respecto a $seccion lo que vamos a poder recoger es o bien la cabecera, cuyo valor sería 0, o bien lo que sería el cuerpo del mensaje cuyo valor sería 1. De esta manera el código que nos recuperaría el cuerpo del mensaje del primero de los mensajes sería:
$cuerpo = imap_fetchbody($inbox,1,1);El contenido del cuerpo del mensaje vendrá codificado, así que deberemos de utilizar la función imap_qprint() para volcar el contenido.
echo imap_qprint($cuerpo);Ya solo nos quedará cerrar la conexión imap al servidor para terminar nuestro ejemplo que nos permite obtener cuerpo de un mensaje con PHP.
imap_close($inbox);Descarga el código de Obtener cuerpo de un mensaje con PHP
Uso de la función imap_fetchbody() para obtener cuerpo de un mensaje con PHP sobre una lista de emails recuperados de un servidor accedido mediante imap.