Invio della posta elettronica
Per inviare la posta elettronica con Gambas possiamo utilizzare almeno quattro modalità.
Indice
[nascondi]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: [" "],... .
In questo caso il browser avvierà il programma per la gestione della posta elettronica.
Uso della Classe "SmtpClient"
Per utilizzare la classe "SmtpClient" |1| , si dovrà impostare nel progetto anche il componente gb.net.smtp:
Public Sub Button1_Click() Dim SMPT As New SmtpClient Dim $fl AS String $fl = File.Load("percorso_del_file_da_allegare") With SMTP .Host = nome_Host .Port = Porta_Host .From = indirizzo_email_di_chi_invia_la posta .To.Add(indirizzo_email_del_destinatario) .Subject = "testo_dell'Oggetto_della_email" .Add(testo_del_corpo_dell'email - il_messaggio) .Add($fl) .Send() End With End
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: |2|
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) |3| 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.
Note
[1] Sembra, comunque, che ancora sussistano dei problemi nell'uso di questa Classe. Infatti, poiché un server remoto richiede la password, e poiché il componente gb.smtp non pare ancora essere in grado di gestire le password per l'autenticazione (fatta eccezione per la Plain authentication), vengono spesso rilevati errori nell'invio delle email . Come affermato dallo stesso Minisini: " It is a pending problem that does not have a good solution at the moment: the gb.net.smtp component has no support for any authentication. I can't add it, because I don't know how to do it. So I should rewrite the component to use a library that know how to authenticate, like libesmtp. But that library has no MIME attachment support, so I have to do it myself. Not something that can be done in five minutes... Unless someone knows a library that can do SMTP with authentication *with* MIME attachment management! "
[2] Il codice è tratto da un suggerimento dell'utente "Golia" del Forum di Gambas-it.org, al quale va un sentito ringraziamento.
[3] 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'"