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