Web2py - Email e SMS

web2py include funzionalità di invio di e-mail e SMS all'utente. Utilizza le librerie per inviare e-mail e sms.

Configurazione della posta elettronica

La classe in-built vale a dire gluon.tools.Mailclass è usata per inviare email nel framework web2py. Il mailer può essere definito con questa classe.

from gluon.tools import Mail
mail = Mail()
mail.settings.server = 'smtp.example.com:25'
mail.settings.sender = '[email protected]'
mail.settings.login = 'username:password'

L'e-mail del mittente come menzionato nell'esempio sopra insieme alla password verrà autenticata ogni volta che viene inviata un'e-mail.

Se l'utente ha bisogno di sperimentare o utilizzare per qualche scopo di debug, ciò può essere ottenuto utilizzando il codice seguente.

mail.settings.server = 'logging'

Ora, tutte le email non verranno inviate ma verranno registrate nella console.

Invio di un'e-mail

Dopo aver impostato le impostazioni di configurazione per un'e-mail utilizzando l'oggetto di posta, un'e-mail può essere inviata a molti utenti.

La sintassi completa di mail.send() è il seguente -

send(
   to, subject = 'Abc',
   message = 'None', attachments = [],
   cc = [], bcc = [], reply_to = [],
   sender = None, encoding = 'utf-8',
   raw = True, headers = {}
)

L'implementazione di mail.send() è dato di seguito.

mail.send(
   to = ['[email protected]'], subject = 'hello',
   reply_to = '[email protected]',
   message = 'Hello ! How are you?'
)

Mailrestituisce un'espressione booleana basata sulla risposta del server di posta, che la posta viene ricevuta dall'utente finale. RitornaTrue se riesce a inviare una mail all'utente.

Gli attributi a, cc e bcc include l'elenco di indirizzi e-mail validi per i quali si intende inviare la posta.

Invio di SMS

L'implementazione per l'invio di messaggi SMS differisce dall'invio di e-mail nel framework web2py poiché richiederà un servizio di terze parti che possa inoltrare i messaggi al destinatario. Il servizio di terze parti non è un servizio gratuito e ovviamente differirà in base alla regione geografica (da Paese a Paese).

web2py utilizza un modulo per aiutare a inviare SMS con il seguente processo:

from gluon.contrib.sms_utils
import SMSCODES, sms_email
email = sms_email('1 (111) 111-1111','T-Mobile USA (abc)')
mail.send(to = email, subject = 'test', message = 'test')

Nell'esempio sopra, SMSCODES è il dizionario gestito da web2py che mappa i nomi delle principali compagnie telefoniche all'indirizzo email postfix.

Le compagnie telefoniche di solito trattano le e-mail provenienti da servizi di terze parti come spam. Un metodo migliore è che le stesse compagnie telefoniche inoltrino l'SMS. Ogni compagnia telefonica include un indirizzo email univoco per ogni numero di cellulare nella sua memoria e l'SMS può essere inviato direttamente all'email.

Nell'esempio sopra,

  • Il sms_email la funzione accetta un numero di telefono (come stringa), che restituisce l'indirizzo e-mail del telefono.

  • L'app per scaffolding include diversi file. Uno di questi è models / db.py, che ne importa quattro.

  • Classi da gluon.tools include anche le librerie di posta e definisce i vari oggetti globali.

  • L'applicazione di scaffolding definisce anche le tabelle richieste dall'oggetto auth, come db.auth_user. L'applicazione di scaffolding predefinita è progettata per ridurre al minimo il numero di file, non per essere modulare. In particolare, il file del modello,db.py, contiene la configurazione, che in un ambiente di produzione è meglio conservarla in file separati.

Qui, suggeriamo di creare un file di configurazione -

from gluon.storage import Storage
   settings = Storage()
   settings.production = False
   
   if
      settings.production:
      settings.db_uri = 'sqlite://production.sqlite'
      settings.migrate = False
   else:
      settings.db_uri = 'sqlite://development.sqlite'
      settings.migrate = True
      settings.title = request.
      settings.subtitle = 'write something here'
		
      settings.author = 'you'
      settings.author_email = '[email protected]'
		
      settings.keywords = ''
      settings.description = ''
      settings.layout_theme = 'Default'
      settings.security_key = 'a098c897-724b-4e05-b2d8-8ee993385ae6'
		
      settings.email_server = 'localhost'
      settings.email_sender = '[email protected]'
      settings.email_login = ''
		
      settings.login_method = 'local'
      settings.login_config = ''