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.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?'
    )
    
    mail根据邮件服务器的响应返回一个布尔表达式,即邮件已被最终用户收到。如果成功向用户发送电子邮件,它会返回True 。
    to、 ccbcc的属性包括要向其发送邮件的有效电子邮件地址列表。
  • 发送短信

    发送 SMS 消息的实现不同于在 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。每个电话公司都在其存储中为每个手机号码包含一个唯一的电子邮件地址,并且可以将 SMS 直接发送到电子邮件。
    在上面的例子中,
    • 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 = '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 = ''