- Web2py 教程
- Web2py - 首页
- Web2py - 简介
- Web2py - Python 语言
- Web2py - 框架概述
- Web2py - 核心
- Web2py - 视图
- Web2py - 数据库抽象层
- Web2py - 表单与验证器
- Web2py - 电子邮件与短信
- Web2py - 访问控制
- Web2py - 服务
- Web2py - 添加 Ajax 效果
- Web2py - 组件
- Web2py - 部署
- Web2py - 安全性
- Web2py 有用资源
- Web2py - 快速指南
- Web2py - 有用资源
- Web2py - 讨论
Web2py - 电子邮件与短信
web2py 包含向用户发送电子邮件和短信的功能。它使用库来发送电子邮件和短信。
设置电子邮件
内置类,即gluon.tools.Mail类用于在web2py框架中发送电子邮件。邮件发送器可以使用此类定义。
from gluon.tools import Mail mail = Mail() mail.settings.server = 'smtp.example.com:25' mail.settings.sender = '[email protected]' mail.settings.login = 'username:password'
每次发送电子邮件时,都会对上述示例中提到的发件人电子邮件及其密码进行身份验证。
如果用户需要进行实验或用于某些调试目的,可以使用以下代码实现。
mail.settings.server = 'logging'
现在,所有电子邮件都不会发送,而是会记录在控制台中。
发送电子邮件
一旦我们使用邮件对象设置了电子邮件的配置设置,就可以向许多用户发送电子邮件。
mail.send()的完整语法如下:
send( to, subject = 'Abc', message = 'None', attachments = [], cc = [], bcc = [], reply_to = [], sender = None, encoding = 'utf-8', raw = True, headers = {} )
mail.send()的实现如下所示。
mail.send( to = ['[email protected]'], subject = 'hello', reply_to = '[email protected]', message = 'Hello ! How are you?' )
Mail根据邮件服务器的响应返回一个布尔表达式,表示邮件是否已由最终用户接收。如果成功向用户发送电子邮件,则返回True。
属性to、cc和bcc包含打算发送邮件的有效电子邮件地址列表。
发送短信
在web2py框架中,发送短信的实现与发送电子邮件不同,因为它需要第三方服务才能将消息转发给接收者。第三方服务并非免费服务,并且显然会因地理区域(国家/地区而异)而异。
web2py 使用一个模块来帮助发送短信,过程如下:
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')
在上面的示例中,SMSCODES是由web2py维护的字典,它将主要电话公司的名称映射到电子邮件地址后缀。
电话公司通常将来自第三方服务的电子邮件视为垃圾邮件。更好的方法是电话公司自己转发短信。每个电话公司在其存储中为每个手机号码包含一个唯一的电子邮件地址,并且可以将短信直接发送到该电子邮件。
在上面的示例中:
sms_email函数接受一个电话号码(作为字符串),它返回电话的电子邮件地址。
脚手架应用程序包含多个文件。其中一个是models/db.py,它导入了四个。
来自gluon.tools的类也包含邮件库,并定义了各种全局对象。
脚手架应用程序还定义了auth对象所需的表,例如db.auth_user。默认脚手架应用程序旨在最大限度地减少文件数量,而不是模块化。特别是,模型文件db.py包含配置,在生产环境中,最好将其保存在单独的文件中。
在这里,我们建议创建一个配置文件:
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 = ''