Leggere la posta elettronica con IMAP e SSL mediante le funzioni esterne del API di Libcurl

Da Gambas-it.org - Wikipedia.

Libcurl è una libreria gratuita lato-client di trasferimento dati con la sintassi URL, capace di supportare diversi protocolli. Essa consente - fra l'altro - di leggere la posta elettronica ricevuta.

Per poter fruire in Gambas delle risorse della libreria Libcurl, è necessario avere installata nel sistema e richiamare la libreria dinamica condivisa: "libcurl.so.4.7.0 ".


Va sottolineato che nel 3° argomento della funzione esterna curl_easy_setopt( ) - immediatamente dopo l'impostazione della url del Server della posta elettronica e separato da uno slash - va definito il numero d'indice della e-mail ricevuta che si intende leggere. Tale indice inizia da 1 ed il suo ordine crescente corrisponde alle e-mail più recenti (pertanto impostando il numero 1 si otterrà la lettura della e-mail più vecchia presente nella propria casella di posta elettronica).

Eventuali allegati all'email saranno mostrati in formato ASCII secondo la codifica Base64.


Mostriamo un esempio pratico per leggere la posta elettronica con IMAP e SSL:

Library "libcurl:4.7.0"

Private Const CURLOPT_VERBOSE As Integer = 41
Private Const CURLOPT_URL As Integer = 10002
Private Const CURLOPT_USERNAME As Integer = 10173
Private Const CURLOPT_PASSWORD As Integer = 10174
  
' CURL *curl_easy_init(void)
' Start a libcurl easy session.
Private Extern curl_easy_init() As Pointer

' CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...)
' Set options for a curl easy handle
Private Extern curl_easy_setopt(curl As Pointer, option As Integer, opts As String) As Integer
 
' CURLcode curl_easy_perform(CURL *curl)
' Perform a blocking file transfer.
Private Extern curl_easy_perform(curl As Pointer) As Pointer

' const char *curl_easy_strerror(CURLcode)
' Turn a CURLcode value into the equivalent human readable error string.
Private Extern curl_easy_strerror(CURLcode As Integer) As String

' void curl_easy_cleanup(CURL *curl)
' End a libcurl easy handle.
Private Extern curl_easy_cleanup(curl As Pointer)


Public Sub Main()

 Dim cu As Pointer
 Dim ris As Integer
 Dim l As Long
    
  cu = curl_easy_init()
  If cu = 0 Then Error.Raise("Impossibile inizializzare la libreria 'curl' !")
   
' Imposta il nome dell'utente dell'account email e la sua password:
  curl_easy_setopt(cu, CURLOPT_USERNAME, "nome_utente")
  curl_easy_setopt(cu, CURLOPT_PASSWORD, "password_utente")
   
' Imposta l'URL del mailserver dell'utente, nonché l'e-mail ricevuta: in questo caso sarà mostrato
' il testo della seconda email più antica presente nella casella di posta elettronica.
  curl_easy_setopt(cu, CURLOPT_URL, "imaps://imap.server.it/INBOX/;UID=2")
  
' Procede alla lettura della e-mail prescelta:
  ris = curl_easy_perform(cu)
  If ris <> 0 Then Error.Raise("Impossibile leggere la posta elettronica: " & curl_easy_strerror(ris))
   
   
' Va in chiusura:
  curl_easy_cleanup(cu)
  
End



Riferimenti