Invio della posta elettronica

Da Gambas-it.org - Wikipedia.

Per inviare la posta elettronica con Gambas possiamo utilizzare varie modalità.


Uso del metodo ".SendMail" della classe Desktop

Per poter utilizzare il metodo ".SendMail" della classe Desktop, si dovrà impostare nel progetto anche il componente gb.desktop:

Public Sub Button1_Click()

 Desktop.SendMail(["lista_degli_indirizzi_email_dei_destinatari"], ["lista_dei_destinatari_CC"], ["lista_dei_destinatari_BCC"], "oggetto_dell'email", "corpo_dell'email", "percorso_del_file_che_sarà_allegato")

End

Se la lista CC e/o la lista BCC non è presente, allora si porrà uno spazio vuoto: [" "],... .

Se non deve essere allegato alcun file, allora si ometterà il corrispondente parametro di riferimento.

In questo caso il browser avvierà il programma per la gestione della posta elettronica.


Uso della Classe "SmtpClient"

Per utilizzare la classe "SmtpClient", si dovrà impostare nel progetto anche il componente gb.net.smtp:

Public Sub Button1_Click()

 Dim SMTP As New SmtpClient 
 Dim $fl AS String
   
   $fl = File.Load("/percorso/dell'eventuale/file/da/allegare")

  With SMTP
    .Host = "nome_Host"
    .Port = Porta_Host
    .User = "nome_utente"
    .Password = "password"
    .Debug = True
    .From = "indirizzo_email_di_chi_invia_la posta"
    .To.Add("indirizzo_email_del_destinatario")
    .Subject = "testo_dell'Oggetto_della_email"
    .Encrypt = Net.SSL
    .Add("testo_del_corpo_dell'email - ossia_il_messaggio")
    .Add($fl)
    .Send()
  End With

End

Laddove in particolare:
- la prorpietà .Host si riferisce al Server di posta elettronica presso il quale colui che invia il messaggio possiede la registrazione di una casella postale elettronica;
- la proprietà .Port si riferisce alla porta in uscita del predetto Server;
- la proprietà .User si riferisce all'indirizzo della casella di posta elettronica di chi invia il messaggio di posta elettronica;
- la proprietà .Password si riferisce alla parola d'ordine utilizzata dall'utente per accedere al servizio di posta elettronica presso il proprio Server.


Mostriamo di seguito un semplice esempio più pratico.
Poniamo dunque il caso di avere un account presso server di posta elettronica tiscali.it . In tal caso sappiamo che il parametro in uscita relativo al Server host principale di Tiscali è: smtp.tiscali.it .
Sappiamo anche che il numero della porta per la posta in uscita è attualmente: 465.
Poniamo il caso che il nome scelto dall'utente identificativo della propria casella di posta elettronica sia: esempio_invio@tiscali.it, e che la sua password per accedere a tale casella postale sia: miapassword.
Poniamo infine il caso che la casella di posta elettronica del destinatario del messaggio sia: esempio_riceve@yahoo.it .

Il codice Gambas sarà dunque il seguente:

Public Sub Button1_Click()

 Dim SMTP As New SmtpClient 
 Dim allegato AS String
   
   $fl = File.Load("/percorso/dell'eventuale/file/da/allegare")

  With SMTP
    .Host = "smtp.tiscali.it"
    .Port = 465
    .User = "esempio_invio"   ' ma va bene anche: esempio_invio@tiscali.it
    .Password = "miapassword"
    .Debug = True
    .From = "esempio_invio@tiscali.it"
    .To.Add("esempio_riceve@yahoo.it")
    .Subject = "testo_dell'Oggetto_della_email"
    .Encrypt = Net.SSL
    .Add("testo_del_corpo_dell'email - ossia_il_messaggio")
    If IsNull(allegato) = False Then .Add(allegato)
    .Send()
  End With

L'invio di posta elettronica con la Classe SmtpClient funziona anche in applicazione a riga di comando.


Uso del comando specifico html

Con alcuni oggetti che supportano il codice html si potrà utilizzare lo specifico comando A HREF + mailto:

Public Sub Button1_Click()

' qui, come esempio, utilizzeremo l'oggetto "Message":
  Message.Info("<A HREF=\"mailto:indirizzo_email_del_destinatario\">Un testo qualsiasi</a>")

End

In questo caso il browser avvierà il programma per la gestione della posta elettronica.


Uso di Thunderbird, Evolution e KMail

Mostreremo ora la modalità per inviare posta elettronica mediante "Thunderbird", "Evolution" e "KMail" con l'uso del comando Shell: |1|

Public Sub Button1_Click()

  postaElettronica("client_di_posta", "indirizzo_destinatario", "Oggetto_dell'email", "Corpo_dell'email", "invio_file_allegato")

End


Public Sub postaElettronica(client As integer, destinatario As String, oggetto As String, corpo As String, allegato As String)

 Dim comandomail As String  
 Dim hmail As Process
 
 If client = 0 Then
' ****Per "THUNDERBIRD":
  comandomail = "thunderbird -compose to='"  
  comandomail &= destinatario  
  comandomail &= "',subject='"  
  comandomail &= oggetto  
  comandomail &= "',body='"  
  comandomail &= corpo

  If allegato = "no" Then  
      comandomail &= "'"  
    Else    
      comandomail &= "',attachment='"  
      comandomail &= allegato & "'"  
  Endif

' Avvia il programma per la gestione della posta elettronica:
   hmail = Shell (comandomail)       |2|

Else If client = 1 Then
' ****Per EVOLUTION:
 comandomail = "evolution mailto:"
 comandomail &= destinatario
 comandomail &= "?subject='"
 comandomail &= oggetto
 If allegato = "no" Then
 comandomail &= "'"
 Else
 comandomail &= "'\\&attach="
 comandomail &= allegato
 Endif
 comandomail &= "\\&body='"
 comandomail &= corpo
 comandomail &= "'"
' Avvia il programma per la gestione della posta elettronica:
 hmail = Shell (comandomail)
  
Else If client = 2 Then
' ****Per KMAIL:
 comandomail = "kmail "
 If allegato = "no" Then
 Else
 comandomail &= " --attach "
 comandomail &= allegato
 Endif
 comandomail &= " mailto:"
 comandomail &= destinatario
 comandomail &= "?subject='"
 comandomail &= oggetto
 comandomail &= "'"
 comandomail &= "\\&body='"
 comandomail &= corpo
 comandomail &= "'"
' Avvia il programma per la gestione della posta elettronica:
 hmail = Shell (comandomail)   
Endif

End

In questo caso il browser avvierà il programma per la gestione della posta elettronica.


Uso dello script mailbtn.sh con il comando Shell

In "/etc/acpi/events" è possibile trovare tutti gli eventi riconosciuti. Se nella cartella "/etc/acpi" è presente lo script "/etc/acpi/mailbtn.sh", potrà essere utilizzato con il comando Shell per avviare il programma per la gestione della posta elettronica.:

Public Sub Button1_Click()

 Dim pass As String = "propria_password"

  If exist("/etc/acpi/mailbtn.sh") then
     Shell "echo " & pass & " | sudo -S /etc/acpi/mailbtn.sh"
     Message.Warning("Premere un tasto per avviare il programma di invio della posta elettronica.")
  Else
     Message.Warning("Non è presente nel sistema lo script\"mailbtn.sh\".")
  Endif

End

In questo caso si avvierà il programma per la gestione della posta elettronica.


Note

[1] Il codice è tratto da un suggerimento dell'utente "Golia" del Forum di Gambas-it.org, al quale va un sentito ringraziamento.

[2] In sostanza la linea del comando è la seguente (senza file allegato):

hmail = Shell "thunderbird -compose to='indirizzo_del_destinatario',subject='Oggetto_dell'email',body='testo_del_corpo'"