Web2py - Email e SMS

O web2py inclui funcionalidades de envio de e-mail e SMS ao usuário. Ele usa bibliotecas para enviar e-mails e sms.

Configurando e-mail

A classe embutida é gluon.tools.Mailclasse é usada para enviar e-mail no framework web2py. O mailer pode ser definido com esta 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'

O e-mail do remetente, conforme mencionado no exemplo acima, junto com a senha, será autenticado cada vez que um e-mail for enviado.

Se o usuário precisar experimentar ou usar para alguma finalidade de depuração, isso pode ser feito usando o código a seguir.

mail.settings.server = 'logging'

Agora, todos os emails não serão enviados, mas serão registrados no console.

Enviando um Email

Depois de definir as configurações de um e-mail usando o objeto de e-mail, um e-mail pode ser enviado a vários usuários.

A sintaxe completa de mail.send() é o seguinte -

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

A implementação de mail.send() é fornecido abaixo.

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

Mailretorna uma expressão booleana com base na resposta do servidor de correspondência, de que a correspondência foi recebida pelo usuário final. RetornaTrue se conseguir enviar um e-mail ao usuário.

Os atributos para, cc e bcc inclui a lista de endereços de e-mail válidos para os quais o e-mail deve ser enviado.

Enviando SMS

A implementação para o envio de mensagens SMS difere do envio de e-mails no framework web2py, pois requer um serviço de terceiros que pode retransmitir as mensagens para o receptor. O serviço de terceiros não é um serviço gratuito e obviamente difere com base na região geográfica (de país para país).

web2py usa um módulo para ajudar a enviar SMS com o seguinte 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')

No exemplo acima, SMSCODES é o dicionário mantido pela web2py que mapeia os nomes das principais companhias telefônicas para o endereço de e-mail postfix.

As empresas telefônicas geralmente tratam os e-mails originados de serviços de terceiros como spam. Um método melhor é que as próprias companhias telefônicas retransmitam o SMS. Cada empresa de telefonia inclui um endereço de e-mail exclusivo para cada número de celular em seu armazenamento e o SMS pode ser enviado diretamente para o e-mail.

No exemplo acima,

  • o sms_email A função recebe um número de telefone (como uma string), que retorna o endereço de e-mail do telefone.

  • O aplicativo de andaime inclui vários arquivos. Um deles é models / db.py, que importa quatro.

  • Aulas de gluon.tools inclui bibliotecas de correio também e define os vários objetos globais.

  • O aplicativo scaffolding também define tabelas exigidas pelo objeto auth, como db.auth_user. O aplicativo de scaffolding padrão é projetado para minimizar o número de arquivos, não para ser modular. Em particular, o arquivo de modelo,db.py, contém a configuração, que em um ambiente de produção, é melhor mantida em arquivos separados.

Aqui, sugerimos a criação de um arquivo de configuração -

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