Una degli ultimi oggetti programmabili inseriti nel linguaggio di Nios4 permette di inviare delle email.
In questo esempio invieremo una mail di cortesia con la copia dell'ordine eseguito al nostro cliente. Lo script sarà inserito nel post salvataggio di quest'ultimo.
Controllare se la mail va inviata oppure no
if dataview.getvalue("stato_ordine") != "Confermato" or dataview.getvalue("mail_inviata") == 1 or dataview.getvalue("email") == "" then
do return end
end
Come prima cosa eseguiamo un controllo sul fatto di mandare la mail oppure no. Le condizioni devono essere che lo stato dell'ordine deve essere confermato, che non p mai stata inviata una mail e che l'indirizzo email sia compilato. Se uno di queste condizioni è falsa allora non procederemo all'invio.
Creazione del documento e del corpo della mail da inviare
stampa_ordine = dataview.createdocument("GGUID STAMPA ORDINE")
corpo_mail = dataview.createdocument("GGUID STAMPA MAIL ORDINE")
In questa fase creeremo la stampa dell'ordine da inviare utilizzando il comando createdocument. Il gguid della stampa è recuperabile all'interno dell'editor su Windows.
La seconda stampa creerà il corpo html da utilizzare nella mail. Questa a tutti gli effetti è una stampa ma ottimizzata per essere utilizzata appunto come testo della mail. La potenzialità sta nel fatto di poter creare una mail qualitativamente e graficamente migliore riportante i dati dell'ordine.
E' possibile anche non creare corpi html per la mail ma inserire un testo semplice.
Invio della Email
email = program.newemail()
email.username = "username"
email.password = "password"
email.smtpserver = "smtp.server"
email.portserver = 587
email.enablessl = true
email.subject = "Copia di cortesia ordine n " .. dataview.getvalue("numero_ordine")
--email.body = "Corpo della mail standard"
email.bodydocument = corpo_mail
email.sendfrom = "help@d-one.info"
email.sendto = dataview.getvalue("email")
email.adddocument(stampa_ordine)
--email.addcc("possibili mail cc aggiuntive")
--email.addcc("possibili mail cc aggiuntive")
valore = email.send()
Il primo blocco crea l'oggetto email e imposta i parametri di connessione al server smtp. Questi dati sono necessari per poter spedire la mail e variano da server a server. Può anche darsi che occorra impostare il server per ricevere richieste di invii da app sconosciute, come ad esempio per Gmail.
Impostiamo il soggeto della mail e agganciamo il corpo email precedentemente creato. Impostiamo la nostra mail per identificare chi la invia (sendfrom) e recuperiamo la mail presente nell'ordine (sendto)
Aggiungiamo come allegato la stampa effettiva dell'ordine e inviamo la mail.
Ultimo passaggio
if valore == true then dataview.setvalue("mail_inviata",1) database.setsql("UPDATE ordini SET
mail_inviata = 1
WHERE gguid='" .. dataview.getvalue("gguid") .. "'" else output.print(email.messageerror) end
Se il valore è uguale a vero significa che la mail è stata correttamente inviata. Per questo modifichiamo il valore del campo mail_inviata sia sulla scheda che nel database per bloccare la possibilità di inviare nuovamente la stessa mail.
Commenti
Posta un commento