Saltar al contenido principal
Versión: v20 R4 BETA

POP3Transporter

La clase POP3Transporter permite recuperar mensajes de un servidor de correo electrónico POP3.

Objeto POP3 Transporter

Los objetos POP3 Transporter se instancian con el comando POP3 New transporter. Ofrecen las siguientes propiedades y funciones:

.acceptUnsecureConnection: Boolean    True si 4D está autorizado a establecer una conexión no cifrada
.authenticationMode: Text    el modo de autenticación utilizado para abrir la sesión en el servidor de correo
.checkConnection() : Object     verifica la conexión utilizando la información almacenada en el objeto transportador
.connectionTimeOut : Integer    el tiempo de espera máximo (en segundos) autorizado para establecer una conexión con el servidor
.delete( msgNumber : Integer )    marca el correo electrónico msgNumber para su eliminación del servidor POP3
.getBoxInfo() : Object    devuelve un objeto boxInfo correspondiente al buzón designado por el transportador POP3
.getMail( msgNumber : Integer { ; headerOnly : Boolean } ) : Object    devuelve el objeto Email correspondiente al msgNumber en el buzón designado por el transportador POP3
.getMailInfo( msgNumber : Integer ) : Object    devuelve un objeto mailInfo correspondiente al msgNumber en el buzón designado por el transportista POP3
.getMailInfoList() : Collection    devuelve una colección de objetos mailInfo que describen todos los mensajes del buzón designado por el transportador POP3
.getMIMEAsBlob( msgNumber : Integer ) : Blob    The .getMIMEAsBlob() function
.host : Text    el nombre o la dirección IP del servidor local
.logFile : Text    la ruta del archivo de historial extendido definido (si lo hay) para la conexión de correo
.port : Integer     el número de puerto utilizado para las transacciones de correo
.undeleteAll()    elimina todas las banderas de borrado establecidas en los correos electrónicos en el POP3_transporter
.user : Text     el nombre del usuario utilizado para la autenticación en el servidor de correo

POP3 New transporter

Histórico
VersiónModificaciones
v18 R2Añadidos

POP3 New transporter( server : Object ) : 4D.POP3Transporter

ParámetrosTipoDescripción
serverobject->Información del servidor de correo
Result4D.POP3Transporter<-POP3 transporter object

|

Descripción

El comando POP3 New transporter configura una nueva conexión POP3según el parámetro server y devuelve un nuevo objeto POP3 transporter. El objeto transportador devuelto se utilizará normalmente para recibir correos electrónicos.

En el parámetro server, pase un objeto que contenga las siguientes propiedades:

serverValor por defecto (si se omite)
.acceptUnsecureConnection: Boolean    True si 4D está autorizado a establecer una conexión no cifradaFalse
.accessTokenOAuth2: Text
.accessTokenOAuth2: Object
Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 authenticationMode. Si se utiliza accessTokenOAuth2 pero se omite authenticationMode, se utiliza el protocolo OAuth 2 (si el servidor lo permite). Cadena de texto u objeto token que representan las credenciales de autorización OAuth 2.
ninguno
.authenticationMode: Text    el modo de autenticación utilizado para abrir la sesión en el servidor de correose utiliza el modo de autenticación más seguro soportado por el servidor
.connectionTimeOut : Integer    el tiempo de espera máximo (en segundos) autorizado para establecer una conexión con el servidor30
.host : Text    el nombre o la dirección IP del servidor localmandatory
.logFile : Text    la ruta del archivo de historial extendido definido (si lo hay) para la conexión de correoninguno
.password: Text
Contraseña de usuario para la autenticación en el servidor. Cadena de texto u objeto token que representan las credenciales de autorización OAuth 2.
ninguno
.port : Integer     el número de puerto utilizado para las transacciones de correo995
.user : Text     el nombre del usuario utilizado para la autenticación en el servidor de correoninguno

Result

La función devuelve un objeto POP3 transporter. Todas las propiedades devueltas son de sólo lectura.

La conexión POP3 se cierra automáticamente cuando se destruye el objeto transportador.

Ejemplo

 var $server : Object
$server:=New object
$server.host:="pop.gmail.com" //Obligatorio
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"
$server.logFile:="LogTest.txt" //log a registrar en la carpeta Logs

var $transporter : 4D.POP3Transporter
$transporter:=POP3 New transporter($server)

$status:=$transporter.checkConnection()
If(Not($status.success))
ALERT("An error occurred receiving the mail: "+$status.statusText)
End if

4D.POP3Transporter.new()

4D.POP3Transporter.new( server : Object ) : 4D.POP3Transporter

ParámetrosTipoDescripción
serverObject->Información del servidor de correo
Result4D.POP3Transporter<-POP3 transporter object

|

Descripción

La función 4D.POP3Transporter.new() crea y devuelve un nuevo objeto del tipo 4D.POP3Transporter. Es idéntico al comando POP3 New transporter (acceso directo).

.acceptUnsecureConnection

Histórico
VersiónModificaciones
v17 R4Añadidos

.acceptUnsecureConnection: Boolean

Descripción

La propiedad .acceptUnsecureConnection contiene True si 4D está autorizado a establecer una conexión no cifrada cuando la conexión encriptada no es posible.

Contiene False si no se permiten las conexiones no cifradas, en cuyo caso se devuelve un error cuando no es posible la conexión cifrada.

Los puertos seguros disponibles son:

  • SMTP

    • 465: SMTPS
    • 587 o 25: SMTP con actualización STARTTLS si lo soporta el servidor.
  • IMAP

    • 143: Puerto IMAP no encriptado
    • 993: IMAP con actualización STARTTLS si lo soporta el servidor
  • POP3

    • 110: Puerto POP3 no encriptado
    • 995: POP3 con actualización STARTTLS si lo soporta el servidor.

.authenticationMode

Histórico
VersiónModificaciones
v17 R4Añadidos

.authenticationMode: Text

Descripción

La propiedad .authenticationMode contiene el modo de autenticación utilizado para abrir la sesión en el servidor de correo.

Por defecto, se utiliza el modo más seguro soportado por el servidor.

Los valores posibles son:

ValorConstantesComentario
APOPPOP3 authentication APOPAuthentication using APOP protocol (POP3 only)
CRAM-MD5POP3 authentication CRAM MD5Autenticación utilizando el protocolo CRAM-MD5
LOGINPOP3 authentication loginAutenticación utilizando el protocolo LOGIN
OAUTH2POP3 authentication OAUTH2Autenticación utilizando el protocolo OAuth2
PLAINPOP3 authentication plainAutenticación utilizando el protocolo PLAIN

.checkConnection()

Histórico
VersiónModificaciones
v17 R4Añadidos

.checkConnection() : Object

ParámetrosTipoDescripción
ResultObject<-Estado de la conexión del objeto transportador

|

Descripción

La función .checkConnection() verifica la conexión utilizando la información almacenada en el objeto transportador, recrea la conexión si es necesario, y devuelve el estado. Esta función permite verificar que los valores proporcionados por el usuario son válidos y coherentes.

Objeto devuelto

La función envía una solicitud al servidor de correo y devuelve un objeto que describe el estado del correo. Este objeto puede contener las siguientes propiedades:

PropiedadTipoDescripción
successbooleanTrue si la verificación es exitosa, False en caso contrario
statusnumber(sólo SMTP) Código de estado devuelto por el servidor de correo (0 en caso de un problema no relacionado con el procesamiento del correo)
statusTexttextMensaje de estado devuelto por el servidor de correo, o último error devuelto en la pila de errores de 4D
errorscollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor de correo)
[ ].errCodenumberCódigo de error 4D
[ ].messagetextDescripción del error 4D
[ ].componentSignaturetextFirma del componente interno que ha devuelto el error

Ejemplo

 var $pw :  Text
var $options : Object
$options:=New object

$pw:=Request("Please enter your password:")
if(OK=1)
$options.host:="pop3.gmail.com"

$options.user:="test@gmail.com"
$options.password:=$pw

$transporter:=POP3 New transporter($options)

$status:=$transporter.checkConnection()
If($status.success)
ALERT("POP3 connection check successful!")
Else
ALERT("Error: "+$status.statusText)
End if
End if
Else
ALERT("Error: "+$status.statusText)
End if
End if

.connectionTimeOut

Histórico
VersiónModificaciones
v17 R5Añadidos

.connectionTimeOut : Integer

Descripción

La propiedad .connectionTimeOut contiene el tiempo de espera máximo (en segundos) autorizado para establecer una conexión con el servidor. Por defecto, si la propiedad no se ha definido en el objeto servidor (utilizado para crear el objeto transportador con SMTP New transporter, POP3 New transporter, o IMAP New transporter), el valor es 30.

.delete()

Histórico
VersiónModificaciones
v18 R2Añadidos

.delete( msgNumber : Integer )

ParámetrosTipoDescripción
msgNumberInteger->Número del mensaje a eliminar

|

Descripción

La función .delete( ) marca el correo electrónico msgNumber para su eliminación del servidor POP3.

En el parámetro msgNumber, pase el número del correo electrónico a eliminar. Este número es devuelto en la propiedad number por el método .getMailInfoList().

La ejecución de este método no elimina realmente ningún correo electrónico. El correo electrónico marcado se eliminará del servidor POP3 sólo cuando se destruya el objeto POP3_transporter (creado con POP3 New transporter). El marcador también puede eliminarse utilizando el método .undeleteAll().

Si la sesión actual termina inesperadamente y se cierra la conexión (por ejemplo, por tiempo de espera, fallo de la red, etc.), se genera un mensaje de error y los mensajes marcados para ser borrados permanecerán en el servidor POP3.

Ejemplo
 $mailInfoList:=$POP3_transporter.getMailInfoList()
For each($mailInfo;$mailInfoList)
// Marcar el correo como "a eliminar al final de la sesión"
$POP3_transporter.delete($mailInfo.number)
End for each
// Forzar el cierre de sesión para eliminar los correos marcados para ser borrados
CONFIRM("Selected messages will be deleted.";"Delete";"Undo")
If(OK=1) //borrado confirmado
$POP3_transporter:=Null
Else
$POP3_transporter.undeleteAll() //eliminar los marcadores de eliminación
End if

.getBoxInfo()

Histórico
VersiónModificaciones
v18 R2Añadidos

.getBoxInfo() : Object

ParámetrosTipoDescripción
ResultObject<-objeto boxInfo

|

Descripción

La función .getBoxInfo() devuelve un objeto boxInfo correspondiente al buzón designado por el transportador POP3. Esta función permite recuperar la información sobre el buzón.

El objeto boxInfo devuelto contiene las siguientes propiedades:

PropiedadTipoDescripción
mailCountNumberNúmero de mensajes en el buzón
sizeNumberTamaño del mensaje en bytes
Ejemplo
 var $server; $boxinfo : Object

$server:=New object
$server.host:="pop.gmail.com" //Obligatorio
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=POP3 New transporter($server)

//mailbox info
$boxInfo:=$transporter.getBoxInfo()
ALERT("The mailbox contains "+String($boxInfo.mailCount)+" messages.")

.getMail()

Histórico
VersiónModificaciones
v20Soporte del parámetro headerOnly
v18 R2Añadidos

.getMail( msgNumber : Integer { ; headerOnly : Boolean } ) : Object

ParámetrosTipoDescripción
msgNumberInteger->Número del mensaje en la lista
headerOnlyBoolean->True para descargar sólo los encabezados del correo electrónico (por defecto, False)
ResultObject<-Objeto Email

|

Descripción

La función .getMail() devuelve el objeto Email correspondiente al msgNumber en el buzón designado por el transportador POP3. Esta función permite recuperar la información sobre el email.

Pase en msgNumber el número del mensaje a recuperar. Este número es devuelto en la propiedad number por la función .getMailInfoList().

Opcionalmente, puede pasar true en el parámetro headerOnly para excluir las partes del cuerpo del objeto Email devuelto. Sólo se devuelven las propiedades de encabezados (headers, a, de...). Esta opción permite optimizar el paso de descarga cuando hay muchos correos electrónicos en el servidor.

nota

Es posible que el servidor no soporte la opción headerOnly.

El método devuelve Null si:

  • msgNumber designa un mensaje inexistente,
  • el mensaje se ha marcado para su eliminación utilizando .delete().

Objeto devuelto

.getMail() devuelve un objeto Email.

Ejemplo

Quiere saber el remitente del primer correo del buzón:

 var $server; $transporter : Object
var $mailInfo : Collection
var $sender : Variant

$server:=New object
$server.host:="pop.gmail.com" //Obligatorio
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=POP3 New transporter($server)

$mailInfo:=$transporter.getMailInfoList()

$sender:=$transporter.getMail($mailInfo[0].number).from

.getMailInfo()

Histórico
VersiónModificaciones
v18 R2Añadidos

.getMailInfo( msgNumber : Integer ) : Object

ParámetrosTipoDescripción
msgNumberInteger->Número del mensaje en la lista
ResultObject<-objeto mailInfo

|

Descripción

La función .getMailInfo() devuelve un objeto mailInfo correspondiente al msgNumber en el buzón designado por el transportista POP3. Esta función permite gestionar localmente la lista de mensajes localizados en el servidor de correo POP3.

En msgNumber, pase el número del mensaje a recuperar. Este número es devuelto en la propiedad number por el método .getMailInfoList().

El objeto mailInfo devuelto contiene las siguientes propiedades:

PropiedadTipoDescripción
sizeNumberTamaño del mensaje en bytes
idTextID único del mensaje

El método devuelve Null si:

  • msgNumber designa un mensaje inexistente,
  • el mensaje se marcó para su eliminación utilizando .delete( ).
Ejemplo
 var $server; $mailInfo : Object
var $mailNumber : Integer

$server.host:="pop.gmail.com" //Mandatory
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

var $transporter : 4D.POP3Transporter
$transporter:=POP3 New transporter($server)

//message info
$mailInfo:=$transporter.getMailInfo(1) //get the first mail
If($mailInfo #Null)
ALERT("First mail size is:"+String($mailInfo.size)+" bytes.")
End if
End if

.getMailInfoList()

Histórico
VersiónModificaciones
v18 R2Añadidos

.getMailInfoList() : Collection

ParámetrosTipoDescripción
ResultCollection<-Colección de objetos mailInfo

|

Descripción

La función .getMailInfoList() devuelve una colección de objetos mailInfo que describen todos los mensajes del buzón designado por el transportador POP3. Esta función permite gestionar localmente la lista de mensajes localizados en el servidor de correo POP3.

Cada objeto mailInfo de la colección devuelta contiene las siguientes propiedades:

PropiedadTipoDescripción
[ ].sizeNumberTamaño del mensaje en bytes
[ ].numberNumberNúmero del mensaje
[ ].idTextID único del mensaje (útil si almacena el mensaje localmente)

Si el buzón no contiene ningún mensaje, se devuelve una colección vacía.

Propiedades number e ID

number es el número de un mensaje del buzón en el momento en que se creó el POP3_transporter. La propiedad number no es un valor estático en relación con ningún mensaje específico y cambiará de una sesión a otra dependiendo de su relación con otros mensajes en el buzón en el momento en que se abrió la sesión. Los números asignados a los mensajes sólo son válidos durante la vigencia del POP3_transporter. En el momento en que el POP3_transporter sea eliminado cualquier mensaje marcado para ser borrado será eliminado. Cuando el usuario vuelva a conectarse al servidor, los mensajes actuales en el buzón serán renumerados de 1 a x.

Sin embargo, el id es un número único asignado al mensaje cuando fue recibido por el servidor. Este número se calcula utilizando la hora y la fecha de recepción del mensaje y es un valor asignado por su servidor POP3. Lamentablemente, los servidores POP3 no utilizan el id como referencia principal de sus mensajes. A lo largo de las sesiones POP3 deberá especificar el number como referencia a los mensajes del servidor. Los desarrolladores deben tener cierto cuidado si desarrollan soluciones que introducen referencias a los mensajes en una base de datos pero dejan el cuerpo del mensaje en el servidor.

Ejemplo

Quiere saber el número total y el tamaño de los correos electrónicos en el buzón:

 var $server : Object
$server:=New object
$server.host:="pop.gmail.com" //Obligatorio
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

var $transporter : 4D.POP3Transporter
$transporter:=POP3 New transporter($server)

C_COLLECTION($mailInfo)
C_LONGINT($vNum;$vSize)

$mailInfo:=$transporter.getMailInfoList()
$vNum:=$mailInfo.length
$vSize:=$mailInfo.sum("size")

ALERT("The mailbox contains "+String($vNum)+" message(s) for "+String($vSize)+" bytes.")

.getMIMEAsBlob()

Histórico
VersiónModificaciones
v18 R3Añadidos

.getMIMEAsBlob( msgNumber : Integer ) : Blob

ParámetrosTipoDescripción
msgNumberInteger->Número del mensaje en la lista
ResultBlob<-Blob de la cadena MIME devuelta por el servidor de correo

|

Descripción

La función .getMIMEAsBlob() The .getMIMEAsBlob() function.

En msgNumber, pase el número del mensaje a recuperar. Este número es devuelto en la propiedad number por el método .getMailInfoList().

El método devuelve un BLOB vacío si:

  • msgNumber designa un mensaje inexistente,
  • el mensaje se marcó para su eliminación utilizando .delete().

BLOB devuelto

.getMIMEAsBlob() devuelve un BLOB que puede almacenarse en una base de datos o convertirse en un objeto Email con el comando MAIL Convert from MIME.

Ejemplo

Quiere saber el número total y el tamaño de los correos electrónicos en el buzón:

 var $server : Object
var $mailInfo : Collection
var $blob : Blob
var $transporter : 4D.POP3Transporter

$server:=New object
$server.host:="pop.gmail.com"
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=POP3 New transporter($server)

$mailInfo:=$transporter.getMailInfoList()
$blob:=$transporter.getMIMEAsBlob($mailInfo[0].number)

.host

Histórico
VersiónModificaciones
v17 R5Añadidos

.host : Text

Descripción

La propiedad .host contiene el nombre o la dirección IP del servidor local. Se utiliza para las transacciones de correo (SMTP, POP3, IMAP).

.logFile

Histórico
VersiónModificaciones
v17 R5Añadidos

.logFile : Text

Descripción

La propiedad .logFile contiene la ruta del archivo de historial extendido definido (si lo hay) para la conexión de correo. Puede ser relativo (a la carpeta actual Logs) o absoluto.

A diferencia de los archivos de registro clásicos (habilitados mediante el comando SET DATABASE PARAMETER), los archivos de registro extendidos almacenan el contenido MIME de todos los correos enviados y no tienen ningún límite de tamaño. Para más información sobre los archivos de registro extendidos, consulte:

.port

Histórico
VersiónModificaciones
v17 R4Añadidos

.port : Integer

Descripción

La propiedad .port contiene el número de puerto utilizado para las transacciones de correo. Por defecto, si la propiedad port no se ha definido en el objeto server (utilizado para crear el objeto transportador con SMTP New transporter, POP3 New transporter, IMAP New transporter), el puerto utilizado es:

  • SMTP - 587
  • POP3 - 995
  • IMAP - 993

.undeleteAll()

Histórico
VersiónModificaciones
v18 R2Añadidos

.undeleteAll()

ParámetrosTipoDescripción
No requiere ningún parámetro

|

Descripción

La función .undeleteAll() elimina todas las banderas de borrado establecidas en los correos electrónicos en el POP3_transporter.

.user

Histórico
VersiónModificaciones
v17 R4Añadidos

.user : Text

Descripción

La propiedad .user contiene el nombre del usuario utilizado para la autenticación en el servidor de correo.