Recibir correo electrónico con el protocolo IMAP

Traducido automáticamente de Deepl

En 4D v18, introdujimos una nueva forma de enviar correos electrónicos. Luego, en 4D v18 R2, añadimos una nueva forma de recuperar correos electrónicos usando POP3. Ahora en 4D v18 R4, estamos dando los primeros pasos para una nueva forma de manejar el protocolo IMAP. Como hicimos para SMTP y POP3, hay un nuevo comando IMAP New transporter para manejar el protocolo IMAP.

El Protocolo de Acceso a Mensajes de Internet (IMAP) es un protocolo estándar de Internet utilizado por los clientes de correo electrónico para recuperar mensajes de correo electrónico de un servidor de correo. Este protocolo permite gestionar múltiples buzones, descargar correos electrónicos, realizar búsquedas en el servidor, gestionar el estado de los mensajes, ¡y mucho más!

Y con esta primera característica de IMAP, puedes añadir métodos al transportador para: tener la lista de los buzones disponibles, seleccionar un buzón, y recibir correo electrónico del buzón seleccionado. Veamos cómo.

El HDI de abajo demuestra cómo recibir correo electrónico a través de IMAP:

HDI recibir correo electrónico a través de IMAP

crear transportador IMAP

Al igual que SMTP y POP3, cuando se utiliza el protocolo IMAP, primero hay que crear un transportador (mediante el comando IMAP New transporter ):

$server:=New object
$server .host:="yourIMAPhost.com"
$server .port:=995
$server .user:="4D.IMAP@mail.com"
$server .password:="XXXXXX"
// Create a transporter from your server information
$IMAP_Transporter:=IMAP New transporter($server)

Seleccionar buzón de correo

Como IMAP admite varios buzones, lo primero que hay que hacer es especificar el buzón que se desea.

Puedes obtener una lista de todos los buzones disponibles en tu servidor de correo con el método getBoxList método:

$boxList:=$IMAP_Transporter.getBoxList()
Alert ("El nombre de su primer buzón es "+$boxList[0].name
)

Una vez que sepa el nombre del buzón específico que necesita, simplemente utilice el método selectBox:

$boxInfo:=$transporter.selectBox($boxList[$boxId].name )

Este comando devuelve información útil como:

  • el número de correos electrónicos en el buzón
  • el número de mensajes recientes

Descargar el correo electrónico

Tiene dos formas de identificar el correo que quiere descargar:

  • La primera es utilizar la posición del correo en el buzón, al igual que en el caso de POP3. Por ejemplo, si quiere descargar el último correo recibido:

$mail:=$transporter.getMail($boxInfo.mailCount)

  • La segunda es utilizar el atributo id del objeto de correo electrónico devuelto por el servidor IMAP. Esta forma es la mejor para usar cuando se quiere recuperar un correo específico ya que la posición de un correo en el buzón puede ser modificada cuando se borran correos:

$mail:=$transporter.getMail($emailId)

Como hemos dicho antes, esta es la primera característica de IMAP. Hay más en camino. Esté atento.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se unió al equipo de 4D Program en noviembre de 2016. Como Product Owner, está a cargo de escribir las historias de usuario y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la característica entregada cumple con las necesidades del cliente. Después de obtener una licenciatura en Ciencias de la Computación en el CNAM, Fabrice se unió a una pequeña empresa de publicación de software como desarrollador Windev. A continuación, trabajó para diferentes empresas del sector industrial y comercial como desarrollador de Windev y de la web, así como asesor técnico de nuevas funcionalidades.