Web2py - Correo electrónico y SMS

web2py incluye funcionalidades de envío de correo electrónico y SMS al usuario. Utiliza bibliotecas para enviar correos electrónicos y sms.

Configurar correo electrónico

La clase incorporada a saber gluon.tools.MailLa clase se usa para enviar correo electrónico en el marco web2py. El mailer se puede definir con esta clase.

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

El correo electrónico del remitente como se menciona en el ejemplo anterior junto con la contraseña se autenticarán cada vez que se envíe un correo electrónico.

Si el usuario necesita experimentar o usar para algún propósito de depuración, esto se puede lograr usando el siguiente código.

mail.settings.server = 'logging'

Ahora, no se enviarán todos los correos electrónicos, pero se registrarán en la consola.

Enviando un correo electrónico

Una vez que hemos establecido los ajustes de configuración para un correo electrónico mediante el objeto de correo, se puede enviar un correo electrónico a muchos usuarios.

La sintaxis completa de mail.send() es como sigue -

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

La implementación de mail.send() se da a continuación.

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

Maildevuelve una expresión booleana basada en la respuesta del servidor de correo, que el correo es recibido por el usuario final. VuelveTrue si logra enviar un correo electrónico al usuario.

Los atributos de, cc y bcc incluye la lista de direcciones de correo electrónico válidas a las que se pretende enviar el correo.

Envío de SMS

La implementación para enviar mensajes SMS se diferencia del envío de correos electrónicos en el marco web2py, ya que requerirá un servicio de terceros que pueda transmitir los mensajes al receptor. El servicio de terceros no es un servicio gratuito y obviamente diferirá según la región geográfica (de un país a otro).

web2py utiliza un módulo para ayudar a enviar SMS con el siguiente proceso:

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

En el ejemplo anterior, SMSCODES es el diccionario mantenido por web2py que asigna los nombres de las principales compañías telefónicas al sufijo de la dirección de correo electrónico.

Las compañías telefónicas suelen tratar los correos electrónicos que se originan en servicios de terceros como spam. Un método mejor es que las propias compañías telefónicas transmitan el SMS. Cada compañía telefónica incluye una dirección de correo electrónico única para cada número de teléfono móvil en su almacenamiento y los SMS se pueden enviar directamente al correo electrónico.

En el ejemplo anterior,

  • los sms_email La función toma un número de teléfono (como una cadena), que devuelve la dirección de correo electrónico del teléfono.

  • La aplicación de andamios incluye varios archivos. Uno de ellos es models / db.py, que importa cuatro.

  • Clases de gluon.tools también incluye bibliotecas de correo y define los diversos objetos globales.

  • La aplicación de scaffolding también define tablas requeridas por el objeto de autenticación, como db.auth_user. La aplicación de andamios predeterminada está diseñada para minimizar el número de archivos, no para ser modular. En particular, el archivo de modelo,db.py, contiene la configuración, que en un entorno de producción es mejor guardar en archivos separados.

Aquí, sugerimos crear un archivo de configuración:

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