zoukankan      html  css  js  c++  java
  • 从零开始搭建物联网平台(8):邮箱通知服务

    关于触发器的通知,最开始有三种打算 微信公众号、 邮箱、 HTTP,最后发现微信公众号平台无法主动向用户推送消息,所以微信公众号暂时不做了,看看有没有其他的解决方案

    搭建SMTP服务

    发送邮件可以借助第三方平台如163、QQ等等,但是使用个人账户去做都是有最大发送数量限制的,为了稳妥起见还是决定搭建自己的STMP服务来发送邮件。

    以ubuntu 14.04为例:借助于postfix搭建SMTP服务

    1. 安装
      apt-get install mailutils

      在设置页面选择Internet site

    2.  配置
      vim  /etc/postfix/main.cf
      
      
      # 修改以下内容
      myhostname = mail.youraddress
      mydomain = youraddress
      myorigin = admin@youraddress
      
      mydestination = $myhostname, localhost.$mydomain, $mydomain
    3. 重启服务
      service postfix restart
    4. 测试
      echo “This is the body of the email” | mail -s “This is the subject line” your_email_address
      
      

      检查是否能够收到邮件,如果没有请检查服务器25端口是否开放,(腾讯云的默认是关闭的需要去申请解封)

    邮箱服务

    python 自带两个模块可以实现发送邮件的功能,email和 smtplib,email负责构造邮件内容,smtplib用来发送邮件
    下面是最简单的一个发送示例

    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    
    def send(receiver,payload):
        sender = 'admin@iotforfml.cn'
        # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
        message = MIMEText(payload, 'plain', 'utf-8')
        # 邮件标题
        subject = '触发器报警通知'
        message['Subject'] = Header(subject, 'utf-8')
        try:
            smtp_obj = smtplib.SMTP('localhost')
            smtp_obj.sendmail(sender, receiver, message.as_string())
        except smtplib.SMTPException:
            pass
    
    send('1193589986@qq.com','aaaa')

    结果:

    何时发送,怎么判断是否需要发送报警邮件,这个问题会放到持久化服务里面去判断,接受消息后就应该判断是否触发,具体的实现我想放到后面整合的时候在说,这里只是简单的实现一个发送邮件的接口

  • 相关阅读:
    4.父类私有属性和方法
    3.单继承和方法的重写
    2.Python封装练习及私有属性
    1.Python面向对象基础
    6.类与对象、封装、构造方法
    5.数组
    4.方法
    3.流程控制语句
    结构型模式和物理视图,模型管理试图的总结
    创建型模式和关于状态视图、活动视图、交互视图的总结
  • 原文地址:https://www.cnblogs.com/FanMLei/p/10500973.html
Copyright © 2011-2022 走看看