TInstinct

source/classes/tinstinct.prg

Prototipo de transporte por correo para que una aplicación hable con el Instinct de su propio usuario. No es una API oficial. Necesita un receptor configurado por separado; enviar correo no autoriza acciones.

Configuración

Solo admite un relay local (127.0.0.1 o localhost). El salto externo debe usar TLS y validar certificados. Los puertos por defecto son SMTP 25 y POP 110; pueden cambiarse con nSmtpPort y nPopPort. Configura cPopUser/cPopPassword para un buzón dedicado de respuestas.

Ejemplos

oInstinct := TInstinct():New( cFrom, cToken, cTo )
if oInstinct:Send( "Hello Instinct" )
   cAnswer := oInstinct:Answer( 10 )
endif

// Register once, then call Pump() from the application's timer:
oInstinct:OnAnswer( {| cText, cId | MsgInfo( cText, cId ) } )
oInstinct:Pump()

Answer() espera y bloquea. OnAnswer() registra el bloque; Pump() sondea una vez desde un timer, pero la conexión puede ocupar hasta nTimeout. No crea un hilo en segundo plano.

samples/instinct/tinstinct.prg: INSTINCT_FROM, INSTINCT_TOKEN, INSTINCT_TO, INSTINCT_POP_USER, INSTINCT_POP_PASSWORD.

Estado y límites

El límite cuenta mensajes no tratados, no las primeras posiciones del buzón: los UIDL ya vistos se saltan y las llamadas siguientes avanzan al resto. Answer() conserva respuestas de otros IDs en aPending para otro Answer() o Pump(). Esa cola vive en la instancia; usa una sola instancia por buzón y consúmela antes de cerrarla. El buzón conserva los correos: archiva los tratados para evitar sondeos largos.