Inviare e-mail

Una volta configurato il package è possibile inviare e-mail in modo manuale o automatico.

Come inviare manualmente e-mail con template

Per inviare manualmente un’email partendo da un template precedentemente disegnato è sufficiente selezionare uno o più record di interesse e cliccare sull’icona della bustina all’interno della tabella (es: Clienti):

../_images/icona-bustina.png

Nella schermata che apparirà sarà poi possibile inserire una Carta intestata ed eventualmente un Mailcode facoltativo, a indicare il «lotto» di invio.

Uno degli utilizzi più comuni del package e-mail è relativo all’invio di e-mail automatiche, per esempio e-mail di benvenuto dopo la registrazione dell’utente, e-mail di recupero password, e-mail contenenti dati relativi all’inserimento di record.

Come programmare l’invio automatico delle e-mail di registrazione nuovo utente e recupero password

Nel caso in cui sia abilitata la registrazione degli utenti direttamente dalla schermata di login, all’interno delle Preferenze (il bottone in basso a destra con il nome dell’istanza) è possibile indicare l’account SMTP precedentemente configurato che verrà utilizzato per le e-mail di sistema:

../_images/package-email-preferenze.png

Nella medesima schermata è inoltre possibile specificare un template di email per la Conferma della Registrazione utente o per il Recupero della password. Si noti che entrambi i modelli sono validi per l’invio solo nel momento in cui le checkbox Allow password recovery e New user registration sono attive. In caso contrario sarà necessario definire un metodo che prepari il record del messaggio per l’invio in un modo alternativo.

È possibile personalizzare integralmente il testo e il design delle e-mail come semplice codice HTML (cliccando sull’icona in basso a sinistra e utilizzando il Rich Text Editor), nonché inserire variabili predefinite. Ad esempio, di default sono definite:

  • $greetings, che si riempie con il valore del nome o alternativamente del cognome dell’utente

  • $link, che produce un token che permette di impostare per la prima volta (o reimpostare) la password dell’utente all’accesso

../_images/email-automatiche-personalizzate.png

Suggerimento

È possibile impostare le variabili che si desidera personalizzando i metodi login_confirmUser, login_confirmNewPassword e login_confirmNewPassword presenti nella risorsa login del Package ADM .

Se la checkbox Save output message durante la Configurazione dell’account non è stata attivata l’invio sarà automatico, se invece è stata attivata non avverrà l’invio automatico della mail ma la creazione di un record all’interno della tabella Messaggi: per l’invio dell’e-mail sarà necessario un ulteriore passaggio descritto nell’ultima sezione di questo documento.

Utilizzare metodi per programmare l’invio automatico delle e-mail

Il caso della mail di Benvenuto e/o di recupero password è un caso piuttosto comune e per questo è stata prevista una modalità più esplicita, ma ci sono diversi altri casi in cui ci può interessare inviare automaticamente delle e-mail (es: alla generazione di un preventivo, alla creazione di un’anagrafica, ecc).

In questi casi è opportuno sfruttare template creati con il template editor, metodi e trigger customizzati per preparare un nostro record Messaggio al verificarsi di specifiche condizioni. Per fare questo Genropy ci mette a disposizione il metodo newMessageFromUserTemplate così definito:

def newMessageFromUserTemplate(self,record_id=None,letterhead_id=None,
                        template_id=None,table=None,template_code=None,
                        attachments=None,to_address=None, subject=None,
                        cc_address=None,bcc_address=None,from_address=None, account_id=None, **kwargs):
    mail_handler=self.db.application.site.getService('mail')

    return self.newMessage(**mail_handler.mailParsFromUserTemplate(record_id=record_id,letterhead_id=letterhead_id,
                        template_id=template_id,table=table,template_code=template_code,
                        attachments=attachments,to_address=to_address, subject=subject,
                        cc_address=cc_address,bcc_address=bcc_address,from_address=from_address, account_id=account_id, **kwargs))

Come inviare automaticamente le e-mail programmate

Una volta preimpostati i record dei messaggi e-mail questi non verranno inviati automaticamente senza che sia stata preimpostata un’operazione di invio pianificato.

Innanzitutto se stiamo lavorando in locale l’invio di e-mail può essere effettuato solo da un utente «vero», e non dall’utente admin di default che viene creato via xml in fase di installazione di Genropy. Per prima cosa quindi creiamo un utente admin con username e password ed effettuiamo il login con questo nuovo utente.

Al nuovo utente in E-mail Config > Accounts assegneremo la capacità di inviare messaggi e spunteremo la checkbox Save output message come abbiamo mostrato in Configurazione

Sempre da Email Config > Accounts, nella View troveremo l’icona dell’ingranaggio da cui sarà possibile selezionare l’opzione Send Messages. Cliccando su Programma ci si presenterà la seguente schermata:

../_images/package-email-scheduler-dati.png

Compilando la form sarà possibile pianificare l’invio in modo che venga eseguito in una data precisa (es: ogni 28 del mese), in uno specifico giorno/ora (es: ogni lunedì alle 7.00), oppure, come abbiamo fatto noi, con una specifica frequenza (es: ogni 5 minuti).

A questo punto l’operazione è pianificata e verrà eseguita secondo le condizioni prestabilite. Un’ultimo passaggio da eseguire, sempre e solo se stiamo lavorando in locale, è il lancio in una nuova finestra del terminale del seguente processo:

gnrtaskworker nomeistanza

Il gnrtaskworker, che funzionerà parallelamente al gnrwsgiserve che starà già eseguendo l’istanza, si occuperà per l’appunto dell’esecuzione dei processi che abbiamo pianificato. Il lancio di gnrtaskworker sul progetto pubblicato online non sarà invece necessario in quanto sarà stato reso automatico nella fase di deploy.

Autore della sezione: Davide Paci