Inviare una Email dagli script di Nios4

 

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