Italian Spedire numerose email

AlpVir

Well-Known Member
Licensed User
Longtime User
Vorrei spedire una serie di email senza alcun intervento da parte dell'utente, se non quella iniziale di schiacciare un pulsante. Dovrebbe poi essere il codice, all'interno di un opportuno loop che scansiona un db, a fare il resto.
Leggo però che :
Note that the email will not be sent automatically. The user will need to press on the send button
Difatti il codice suggerito :

B4X:
Dim Message As Email
Message.To.Add( Rs.GetString ("Email") )
Message.Subject = "Messaggio di pinco pallino"
Message.Body = "bla bla bla"
StartActivity(Message.GetIntent)

richiede appunto una specifica operazione per ogni email che si intende spedire.
Poichè io vorrei spedirne una decina ne consegue che il tutto diventa ingestibile praticamente.
Quali suggerimenti potete darmi ?
Grazie anticipatamente.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Grazie fiaful
In effetti NON devo aggiungere allegati e la connessione NON è (non credo che sia) criptata.
Quanto a "scrivere componenti" .... al momento non saprei che pesci pigliare.
Qundi tu suggerisci di indicare in qualche modo, quale mittente, oltrechè il solito [email protected] anche il server SMPT (smtp.gmail.com) e "superare" (ossia non utilizzare) il client di posta elettronica.

EDIT
In effetti esiste l'oggetto SMT che sembra fare il caso mio. Stasera provo.
"SMTP object allows you to send emails with no user intervention and without relying on the device installed mail clients."
 
Last edited:

djveleno

Active Member
Licensed User
Longtime User
La libreria è la NET, il componente SMTP, io ho provato a creare un'app che spediva mail a 5/6 indirizzi ma, non ha funzionato, sia sulla porta 25 che sulla 587, se riesci mi puoi tenere aggiornato?
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Io ho trovato tutto molto semplice e di immediata realizzazione (stranamente, secondo il mio standard).
Prima si dichiara
B4X:
Sub Process_Globals
    Dim SMTP As SMTP
End Sub

e poi

B4X:
    Rs = Main.dbIAH.ExecQuery(Criterio)
    TotRec = Rs.RowCount
    For N=0 To TotRec-1
        Rs.Position = N
            Nome = Rs.GetString ("Nome")
            Mail = Rs.GetString ("Email")
            ToastMessageShow("Invio una email a "&Nome& "(" & Mail &")", False)
            SMTP.To.Add(Mail)
    Next
    SMTP.Subject = "Messaggio di " & Main.Proprietario
    SMTP.Body = Messaggio
SMTP.Body = SMTP.Body.Replace("=", "=3D")
    SMTP.Send

L'unico problema è un link che è all'interno della stringa Messaggio: non funziona.
Anche utilizzando :
B4X:
encodedLink = su.EncodeUrl(link, "UTF8")
il link nell'email spedita non svolge la sua funzione.
Nella barra di stato di Tunderbird, passando il mouse sul link, esso viene visualizato correttamente ma con una barra "/" in più alla fine, barra che non appare nel testo dell'email.
In sintesi:
- nell'email appare www.nomesito/pagina.asp?Parametro=1234&Altro=abcd
- nella barra di stato appare www.nomesito/pagina.asp?Parametro=1234&Altro=abcd/
Bisogna che ci lavori ancora dietro.

EDIT
Dimenticavo: Bisogna ancora aggiungere, in Activity_Create
If FirstTime Then
SMTP.Initialize("smtp.gmail.com", 465, "[email protected]", "xxxxx", "SMTP")
SMTP.UseSSL = True
End If
 
Last edited:

AlpVir

Well-Known Member
Licensed User
Longtime User
Il problema del post precedente (link non corretto nell'email) si risolve con un
B4X:
SMTP.Body = SMTP.Body.Replace("=", "=3D")
 

luciano deri

Active Member
Licensed User
Longtime User
Slave, ho provato a usare la libreria NET per una questione analoga, ma non mi esegue mai l'evento SMTP_MessageSent.
 
Top