Web2py 邮件和短信
web2py包括向用户发送电子邮件和短信的功能。它使用库来发送电子邮件和短信。
设置电子邮件
内置的类: gluon.tools.Mail 用于在web2py框架中发送电子邮件。可以使用这个类来定义邮件发送器。
from gluon.tools import Mail
mail = Mail()
mail.settings.server = 'smtp.example.com:25'
mail.settings.sender = 'abc@example.com'
mail.settings.login = 'username:password'
如上面的例子中提到的发送方电子邮件,连同密码,在每次发送电子邮件时都将进行身份验证。
如果用户需要进行试验或出于某些调试目的使用,可以使用以下代码实现。
mail.settings.server = 'logging'
现在,所有的邮件将不会发送,但会在控制台中记录。
发送电子邮件
一旦我们使用mail对象设置了电子邮件的配置设置,就可以向多个用户发送电子邮件。
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 = ['sender@example.com'], subject = 'hello',
reply_to = 'abc@example.com',
message = 'Hello ! How are you?'
)
邮件 根据邮件服务器的响应返回一个布尔表达式,表示邮件被最终用户接收到。如果成功向用户发送电子邮件,则返回 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 函数接受一个电话号码(作为字符串),返回电话的电子邮件地址。
- scaffolding应用程序包括几个文件。其中之一是models/db.py,它导入四个文件。
- 来自 gluon.tools 的类还包括邮件库,并定义了各种全局对象。
- scaffolding应用程序还定义了auth对象所需的表,例如 db.auth_user 。默认的scaffolding应用程序旨在尽量减少文件数量,而不是模块化。特别是模型文件 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 = 'you@example.come'
settings.keywords = ''
settings.description = ''
settings.layout_theme = 'Default'
settings.security_key = 'a098c897-724b-4e05-b2d8-8ee993385ae6'
settings.email_server = 'localhost'
settings.email_sender = 'you@example.com'
settings.email_login = ''
settings.login_method = 'local'
settings.login_config = ''