Italian Inviare una mail tramite l'account di una propria mail

toro1950

Active Member
Licensed User
Un caro saluto a tutta la comunità, avrei bisogno che un appa che sto sviluppando posssa inviare una mail ad un preciso indirizzo sfruttato l'account della mia mail,
esempio [email protected], oppure @alice.it, oppure @libero.it ecc della quale chiaramente conosco le credenziali (user e password, smtp, ecc)
ed inviarla ad un idirizzo ben preciso della quale chiaramaente conosco solo l'indirizzo, è possibile farlo? sono alle prima armi, ringrazio in anticipo
chiunque voglia aiutarmi. Grazie
Mario
 

drgottjr

Expert
Licensed User
Longtime User
quando e' possibile mandare email attraverso una app tua,
usa la libreria net (con la classe stmp). funziona perfettamente.
usa la casella di ricerca sopra ("net", "smtp")

ma, da solito, non e' possibile inviare email tramite una app (di un terzo)
senza un server smtp che lo permetta. e, da solito, non lo permettono.

devi cercare un server smtp (gratuito o no). si tratta di un servizio come
tanti altri (http, ftp, ssh, etc). molti sviluppatori vogliono inviare email dalle
loro app come tu. dopo nella tua app, puoi usare il tuo indirizzo come mittente
e qualsiasi altro indirizzo come destinatario, e il server si occupara' dell'invio.

c'era una volta quando gmail lo permetteva. forse ancora possibile, ma
soltanto con un account gmail. comunque non facile da configurare se non mi
sabbaglio.
 

toro1950

Active Member
Licensed User
Seguendo ai tuoi consigli ci sono riuscito: ho creato una mail ad hoc nel mio sito e utilizzato smtp.
l'unico problema che riscontro è che non riesco ad ottenere un messaggio di mail inviata o meno
ho provato con Wait For smtpClient_MessageSent(Success As Boolean) ma non mi restituisci nessun
messaggio, la mail viene sempre inviata
Private Sub SendEmail(FileName As String)
smtpClient.UseSSL = False
smtpClient.To.Add("mail di destinazione")
smtpClient.Subject = FileName
smtpClient.Body = "questa è una prova invio mail con app"
smtpClient.Send
Wait For smtpClient_MessageSent(Success As Boolean)
If Success Then
ToastMessageShow("mail inviata", True)
Else
ToastMessageShow("LastException.Message", True)
End If
End Sub
 

Sagenut

Expert
Licensed User
Longtime User
Elimina la parte dopo
B4X:
smtpClient.Send
e aggiungi questa Sub al tuo progetto
B4X:
Sub smtpClient_MessageSent(Success As Boolean)
If Success Then
  ToastMessageShow("Mail Inviata", True)
Else
  ToastMessageShow("Errore: " & LastException.Message , True)
End If
End Sub
 
Last edited:

Sagenut

Expert
Licensed User
Longtime User
Ho corretto il nome dell'evento mettendo il tuo.
Prima c'era il nome generico.
Copia di nuovo l'esempio se lo avevi già preso.
 

toro1950

Active Member
Licensed User
Ho provato ma ancora non mi restituisce nessn messaggio, forse non ho settato qualcosa, non capisco.
Non ho ancora capito come inserire il codice qui, quindi allego il codice
 

Sagenut

Expert
Licensed User
Longtime User
Per pubblicare del codice devi usare l'icona con
</>
e copiare il tuo codice nella finestra che si apre.
 

toro1950

Active Member
Licensed User
ho notato che il file zippato era troppo grande, allego solo codice
 

Attachments

  • provamail.zip
    1.2 KB · Views: 139

Sagenut

Expert
Licensed User
Longtime User
Il tuo progetto è un Default o un B4XPages?
Se è un Default per creare il file zip del progetto devi usare
Export as Zip
che trovi nel menù dell'IDE.
Puoi anche vedere una icona che sembra un pacco regalo per usare quella funzione.
Non sono a casa quindi non posso fare molto.
 

toro1950

Active Member
Licensed User
anche con Sub smtpClient_MessageSent(Success As Boolean) non viene visualizzato nessun messaggio
 

Sagenut

Expert
Licensed User
Longtime User
OK, ho controllato.
Io non ho mai usato quella libreria quindi non la conosco.
Il problema è nella riga di Initialize, che è composta così
B4X:
smtpClient.Initialize(SERVER, PORT, USERNAME, PASSWORD, EVENTNAME)
La stringa che scriverai come EVENTNAME sarà quella da usare per rinominare la Sub.
Esempio:
B4X:
smtpClient.Initialize(SERVER, PORT, USERNAME, PASSWORD, "MandaMail")

Private Sub MandaMail_MessageSent(Success As Boolean)
    If Success Then
        ToastMessageShow("Mail Inviata", True)
    Else
        ToastMessageShow("Errore: " & LastException.Message , True)
    End If
End Sub
A te la scelta del nome per l'Evento.
Quello attuale con la sintassi come un indirizzo internet diviso da punti non credo sia buono.
Fammi sapere
 
Top