Web2py - Email et SMS

web2py inclut des fonctionnalités d'envoi d'e-mails et de SMS à l'utilisateur. Il utilise des bibliothèques pour envoyer des e-mails et des sms.

Configuration du courrier électronique

La classe intégrée à savoir gluon.tools.MailLa classe est utilisée pour envoyer des e-mails dans le framework web2py. Le mailer peut être défini avec cette 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 de l'expéditeur tel que mentionné dans l'exemple ci-dessus ainsi que le mot de passe seront authentifiés à chaque fois qu'un e-mail est envoyé.

Si l'utilisateur a besoin d'expérimenter ou d'utiliser à des fins de débogage, cela peut être réalisé à l'aide du code suivant.

mail.settings.server = 'logging'

Désormais, tous les e-mails ne seront pas envoyés mais seront enregistrés dans la console.

Envoi d'un e-mail

Une fois que nous avons défini les paramètres de configuration pour un e-mail à l'aide d'un objet de messagerie, un e-mail peut être envoyé à de nombreux utilisateurs.

La syntaxe complète de mail.send() est comme suit -

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

L'implémentation de mail.send() est donnée ci-dessous.

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

Mailrenvoie une expression booléenne basée sur la réponse du serveur de messagerie, indiquant que le courrier est reçu par l'utilisateur final. Il retourneTrue s'il réussit à envoyer un e-mail à l'utilisateur.

Les attributs de, cc et bcc inclut la liste des adresses électroniques valides pour lesquelles le courrier est destiné à être envoyé.

Envoi de SMS

La mise en œuvre pour l'envoi de messages SMS diffère de l'envoi d'e-mails dans le cadre web2py car elle nécessitera un service tiers capable de relayer les messages vers le destinataire. Le service tiers n'est pas un service gratuit et différera évidemment en fonction de la région géographique (d'un pays à l'autre).

web2py utilise un module pour aider à envoyer des SMS avec le processus suivant -

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')

Dans l'exemple ci-dessus, SMSCODES est le dictionnaire maintenu par web2py qui mappe les noms des principales compagnies de téléphone à l'adresse e-mail suffixe.

Les compagnies de téléphone traitent généralement les e-mails provenant de services tiers comme du spam. Une meilleure méthode est que les compagnies de téléphone relaient elles-mêmes les SMS. Chaque compagnie de téléphone inclut une adresse e-mail unique pour chaque numéro de mobile dans son stockage et le SMS peut être envoyé directement à l'e-mail.

Dans l'exemple ci-dessus,

  • le sms_email La fonction prend un numéro de téléphone (sous forme de chaîne), qui renvoie l'adresse e-mail du téléphone.

  • L'application d'échafaudage comprend plusieurs fichiers. L'un d'eux est models / db.py, qui en importe quatre.

  • Classes de gluon.tools inclut également des bibliothèques de messagerie et définit les différents objets globaux.

  • L'application d'échafaudage définit également les tables requises par l'objet auth, telles que db.auth_user. L'application d'échafaudage par défaut est conçue pour minimiser le nombre de fichiers et non pour être modulaire. En particulier, le fichier modèle,db.py, contient la configuration qui, dans un environnement de production, est mieux conservée dans des fichiers séparés.

Ici, nous vous suggérons de créer un fichier de configuration -

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 = ''