Differenze tra le versioni di "Leggere la posta elettronica mediante le sole risorse di Gambas"

Da Gambas-it.org - Wikipedia.
 
Riga 10: Riga 10:
 
<BR>- ''pop.User'' rappresenta l'identificativo della casella di posta elettronica dell'utente (esempio: ''identificativo@tiscali.it'', ma anche più semplicemente: ''identificativo'');
 
<BR>- ''pop.User'' rappresenta l'identificativo della casella di posta elettronica dell'utente (esempio: ''identificativo@tiscali.it'', ma anche più semplicemente: ''identificativo'');
 
<BR>- ''pop.Password'' rappresenta la password dell'utente per accedere alla sua casella di posta elettronica.
 
<BR>- ''pop.Password'' rappresenta la password dell'utente per accedere alla sua casella di posta elettronica.
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim pop As New Pop3Client
 
   Dim pop As New Pop3Client
Riga 18: Riga 18:
 
   Dim contenuto, decodifica As String
 
   Dim contenuto, decodifica As String
 
   Dim email, codifica As Integer
 
   Dim email, codifica As Integer
    
+
    With pop
+
   With pop
      .Host = "pop.<FONT Color=gray>''server.xx''</font>"
+
    .Host = "pop.<FONT Color=gray>''server.xx''</font>"
      .Port = <FONT Color=gray>''numero_porta''</font>
+
    .Port = <FONT Color=gray>''numero_porta''</font>
      .User = "<FONT Color=gray>''identificativo_utente''</font>"
+
    .User = "<FONT Color=gray>''identificativo_utente''</font>"
      .Password = "<FONT Color=gray>''password''</font>"
+
    .Password = "<FONT Color=gray>''password''</font>"
      .Encrypt = Net.SSL
+
    .Encrypt = Net.SSL
      .Debug = False
+
    .Debug = False
      .Open()
+
    .Open()
    End With
+
  End With
 
+
 
  <FONT Color=gray>' ''Imposta il numero d'indice (che ha inizio da zero) della e-mail ricevuta da leggere:''</font>
 
  <FONT Color=gray>' ''Imposta il numero d'indice (che ha inizio da zero) della e-mail ricevuta da leggere:''</font>
    email = 4
+
  email = 4
       
+
     
 
  <FONT Color=gray>' ''Controlla che il numero d'indice impostato corrisponda ad un e-mail esistente:''</font>
 
  <FONT Color=gray>' ''Controlla che il numero d'indice impostato corrisponda ad un e-mail esistente:''</font>
    If email > pop.Count - 1 Then
+
  If email > pop.Count - 1 Then
      Print "\n\e[5mIl numero di e-mail scelto è superiore a quello delle e-mail effettivamente presenti !"  
+
    Print "\n\e[5mIl numero di e-mail scelto è superiore a quello delle e-mail effettivamente presenti !"  
      Quit
+
    Quit
    Endif
+
  Endif
    
+
    Print "===== E-MAIL RICEVUTA n. "; email + 1; " =====\n"
+
   Print "===== E-MAIL RICEVUTA n. "; email + 1; " =====\n"
    With mimess = New MimeMessage(pop[email].Text)
+
  With mimess = New MimeMessage(pop[email].Text)
 
  <FONT Color=gray>' ''Mostra il mittente della e-mail ed il suo indirizzo:''</font>
 
  <FONT Color=gray>' ''Mostra il mittente della e-mail ed il suo indirizzo:''</font>
      Print "\e[1mMittente:  \e[21m "; .Sender
+
    Print "\e[1mMittente:  \e[21m "; .Sender
      Print "\e[1mTo:        \e[21m "; .To
+
    Print "\e[1mTo:        \e[21m "; .To
      If Not IsNull(.Cc) Then Print "\e[1mCc:        \e[21m "; .Cc
+
    If Not IsNull(.Cc) Then Print "\e[1mCc:        \e[21m "; .Cc
      If Not IsNull(.BCc) Then Print "\e[1mBcc:      \e[21m "; .BCc
+
    If Not IsNull(.BCc) Then Print "\e[1mBcc:      \e[21m "; .BCc
 
  <FONT Color=gray>' ''Mostra l'argomento della e-mail:''</font>
 
  <FONT Color=gray>' ''Mostra l'argomento della e-mail:''</font>
      Print "\e[1mArgomento: \e[21m "; .Subject
+
    Print "\e[1mArgomento: \e[21m "; .Subject
      Print "\n--------------------------------------"
+
    Print "\n--------------------------------------"
      Print "\e[1mTESTO: \e[21m \n"
+
    Print "\e[1mTESTO: \e[21m \n"
 
  <FONT Color=gray>' ''Legge il testo della prima parte della e-mail:''</font>
 
  <FONT Color=gray>' ''Legge il testo della prima parte della e-mail:''</font>
      Print .Part[0].Data
+
    Print .Part[0].Data
     
+
   
 
  <FONT Color=gray>' ''Verifica se c'è un file allegato. Se c'è, lo scarica:''</font>
 
  <FONT Color=gray>' ''Verifica se c'è un file allegato. Se c'è, lo scarica:''</font>
      If .Part[.Part.Count - 1].ContentDisposition Like "*attachment*" Then
+
    If .Part[.Part.Count - 1].ContentDisposition Like "*attachment*" Then
        Print "\n--------------------------------------"
+
      Print "\n--------------------------------------"
        nomefile = .Part[.Part.Count - 1].FileName
+
      nomefile = .Part[.Part.Count - 1].FileName
        codifica = .Part[.Part.Count - 1].ContentEncoding
+
      codifica = .Part[.Part.Count - 1].ContentEncoding
        idHeader = .Part[.Part.Count - 1].ContentId
+
      idHeader = .Part[.Part.Count - 1].ContentId
        contenuto = .Part[.Part.Count - 1].ToString()
+
      contenuto = .Part[.Part.Count - 1].ToString()
        dati_allegato = Scan(contenuto, "*" & idHeader & ">\n*")[1]
+
      dati_allegato = Scan(contenuto, "*" & idHeader & ">\n*")[1]
        decodifica = mm.Decode(dati_allegato, codifica)
+
      decodifica = mm.Decode(dati_allegato, codifica)
        Print "\n\e[1mFile allegato: \e[21m "; nomefile
+
      Print "\n\e[1mFile allegato: \e[21m "; nomefile
 
  <FONT Color=gray>' ''Salva il file allegato con il nome e nel percorso prescelti:''</font>
 
  <FONT Color=gray>' ''Salva il file allegato con il nome e nel percorso prescelti:''</font>
        File.Save("/tmp" &/ nomefile, decodifica)
+
      File.Save("/tmp" &/ nomefile, decodifica)
      Endif
+
    Endif
 
      
 
      
    End With
+
  End With
 
      
 
      
 
  <FONT Color=gray>' ''Effettua il logout da Server e si disconnette:''</font>
 
  <FONT Color=gray>' ''Effettua il logout da Server e si disconnette:''</font>
    pop.Close()
+
  pop.Close()
   
+
   
  '''End'''
+
  End

Versione attuale delle 18:01, 4 mar 2024

Per leggere mediante le risorse di Gambas la propria posta elettronica, è necessario attivare i seguenti Componenti:

  • gb.net
  • gb.net.pop3
  • gb.mime


Mostriamo un esempio pratico, laddove:
- pop.host rappresenta il Server di posta elettronica dell'utente (ad esempio: pop.tiscali.it);
- pop.Port rappresenta la porta Porta POP3 con SSL del Server (ad esempio con Tiscali: 995);
- pop.User rappresenta l'identificativo della casella di posta elettronica dell'utente (esempio: identificativo@tiscali.it, ma anche più semplicemente: identificativo);
- pop.Password rappresenta la password dell'utente per accedere alla sua casella di posta elettronica.

Public Sub Main()
 
 Dim pop As New Pop3Client
 Dim mm As Mime
 Dim mimess As MimeMessage
 Dim nomefile, dati_allegato, idHeader As String
 Dim contenuto, decodifica As String
 Dim email, codifica As Integer

 With pop
   .Host = "pop.server.xx"
   .Port = numero_porta
   .User = "identificativo_utente"
   .Password = "password"
   .Encrypt = Net.SSL
   .Debug = False
   .Open()
 End With

' Imposta il numero d'indice (che ha inizio da zero) della e-mail ricevuta da leggere:
 email = 4
      
' Controlla che il numero d'indice impostato corrisponda ad un e-mail esistente:
 If email > pop.Count - 1 Then
   Print "\n\e[5mIl numero di e-mail scelto è superiore a quello delle e-mail effettivamente presenti !" 
   Quit
 Endif

 Print "===== E-MAIL RICEVUTA n. "; email + 1; " =====\n"
 With mimess = New MimeMessage(pop[email].Text)
' Mostra il mittente della e-mail ed il suo indirizzo:
   Print "\e[1mMittente:  \e[21m "; .Sender
   Print "\e[1mTo:        \e[21m "; .To
   If Not IsNull(.Cc) Then Print "\e[1mCc:        \e[21m "; .Cc
   If Not IsNull(.BCc) Then Print "\e[1mBcc:       \e[21m "; .BCc
' Mostra l'argomento della e-mail:
   Print "\e[1mArgomento: \e[21m "; .Subject
   Print "\n--------------------------------------"
   Print "\e[1mTESTO: \e[21m \n"
' Legge il testo della prima parte della e-mail:
   Print .Part[0].Data
    
' Verifica se c'è un file allegato. Se c'è, lo scarica:
   If .Part[.Part.Count - 1].ContentDisposition Like "*attachment*" Then
     Print "\n--------------------------------------"
     nomefile = .Part[.Part.Count - 1].FileName
     codifica = .Part[.Part.Count - 1].ContentEncoding
     idHeader = .Part[.Part.Count - 1].ContentId
     contenuto = .Part[.Part.Count - 1].ToString()
     dati_allegato = Scan(contenuto, "*" & idHeader & ">\n*")[1]
     decodifica = mm.Decode(dati_allegato, codifica)
     Print "\n\e[1mFile allegato: \e[21m "; nomefile
' Salva il file allegato con il nome e nel percorso prescelti:
     File.Save("/tmp" &/ nomefile, decodifica)
   Endif
   
 End With
   
' Effettua il logout da Server e si disconnette:
 pop.Close()
   
End