Obtener cuerpo de un mensaje con PHP

05/Oct/2017 PHP Deja un comentario
programación 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.

  1. $hostname = '{mail.correo.com/notls}INBOX';
  2. $username = 'test@correo.com';
  3. $password = 'password';
  4.  
  5. $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().

  1. $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:

  1. 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:

  1. $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.

  1. 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.

  1. imap_close($inbox);

Vídeos sobre PHP


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*