V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
noah1987
V2EX  ›  程序员

有没有能提供 http get 一下,就发邮件通知的网站?

  •  
  •   noah1987 · 2017-05-09 08:10:50 +08:00 · 4861 次点击
    这是一个创建于 2757 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人在做一个售货机项目,其中有一个要求是如果售货机多久跟本公司服务器失去联系,就发邮件通知我们。
    售货机的 busybox 里并没有集成 sendmail 服务,给卖出去的售货机升级这个也不现实。但我们是可以远程升级业务模块部分的。
    现在想让售货机 Http get 一下某个链接,就发邮件通知我们。
    不知哪个网站提供这种服务?
    第 1 条附言  ·  2017-05-09 09:20:40 +08:00
    1.我们有心跳。
    2.这个邮件通知机制不管是为了什么,实现都是很有必要的。以后还可能有别的用途。
    40 条回复    2017-11-12 19:02:34 +08:00
    timothyye
        1
    timothyye  
       2017-05-09 08:18:29 +08:00 via Android
    售货机如果网络问题,掉线,或者自身程序出了问题,也没法 get 你某个链接了吧 ?
    可以换个思路,考虑售货机固定时间调用你们某个 url,类似于心跳的形式,表示正常。写个监控程序,如果某个售货机长时间没有心跳信息,就表示出了问题,这个时候由你们的监控程序发告警邮件。
    Eleutherios
        2
    Eleutherios  
       2017-05-09 08:20:48 +08:00 via iPhone
    noah1987
        3
    noah1987  
    OP
       2017-05-09 08:33:59 +08:00
    @timothyye 这样不行。因为有些是我们调试用的,有些客户那买了又暂时闲置。如果判断售货机很久没心跳就认为它异常,那我们工作量太大了。
    Fishdrowned
        4
    Fishdrowned  
       2017-05-09 08:46:10 +08:00 via Android
    “其中有一个要求是如果售货机多久跟本公司服务器失去联系”

    1 楼的方法是正解
    sciooga
        5
    sciooga  
       2017-05-09 08:55:47 +08:00 via Android
    一直用 mailgun 提供 API 发送邮件

    不过楼主逻辑有些难理解... 那一直发邮件不就相当于一直有心跳包吗?找异常的反过来还是没心跳包那些机器,这样你反倒还收到了一大堆“正常”的邮件,判断起来更麻烦了
    gy6221
        6
    gy6221  
       2017-05-09 08:55:59 +08:00
    @noah1987 那么售货机掉线了,或者自身应用挂掉了,还怎么去 get 你指定的链接呢?
    ss098
        7
    ss098  
       2017-05-09 09:07:48 +08:00
    考虑到闲置,也许基于 1 楼的思路上加条件:这台设备曾联系过服务器且最近一天内没有通知过服务器,就触发警报,是不是可以解决呢?
    StevenTong
        8
    StevenTong  
       2017-05-09 09:10:10 +08:00
    不理解楼主的逻辑 发邮件和发心跳包有什么区别?到底怎么样算异常的逻辑你们后台自己去想呀
    momocraft
        9
    momocraft  
       2017-05-09 09:12:28 +08:00
    失去联系后还依赖网络听起来颇不可靠,可以试试用 1 楼的心跳,并且检测上升沿
    wizardoz
        10
    wizardoz  
       2017-05-09 09:13:22 +08:00
    如果是我的话我会把消息推送到消息队列,订阅端再实现发送邮件,如果将来觉得邮件不好,要改成短信或者微信,不需要改业务机上的代码,实现新的订阅端就可以。
    lifeintools
        11
    lifeintools  
       2017-05-09 09:13:52 +08:00 via iPhone
    心跳
    noah1987
        12
    noah1987  
    OP
       2017-05-09 09:15:50 +08:00
    @gy6221 我们做这个功能仅仅是预防自己服务器挂掉,然后通知我们。
    wly19960911
        13
    wly19960911  
       2017-05-09 09:17:57 +08:00 via Android
    @noah1987 那为什么不对自己服务器发起心跳?由一个单独服务器模拟通信…并且发邮件
    noah1987
        14
    noah1987  
    OP
       2017-05-09 09:22:38 +08:00
    @wly19960911 现在打算搞个额外的虚拟主机用来接收售货机的 http 请求并通过 mailgun 发邮件。
    在考虑如何实现。我一直在用 c,对 php 等跟互联网打交道的东西并不熟。。。
    wly19960911
        15
    wly19960911  
       2017-05-09 09:36:52 +08:00 via Android
    @noah1987 如果硬要这样我感觉没必要做成 get/post 一下就发邮件,把一段的信息储存进数据库查出来,定时发送上一个时段的信息,一个时段根据信息量大小切割成几个发送。
    reus
        16
    reus  
       2017-05-09 09:40:41 +08:00
    你招个稍微靠谱的后端都能做好这种小儿科……
    zktz
        17
    zktz  
       2017-05-09 09:43:03 +08:00
    拿 php 自己做一个,很快。
    flowfire
        18
    flowfire  
       2017-05-09 09:44:02 +08:00 via Android
    搜狐 sendmail
    p.s.我也没懂为什么不用心跳包
    flowfire
        19
    flowfire  
       2017-05-09 09:45:15 +08:00 via Android
    sendcloud 刚刚脑抽了
    bomb77
        20
    bomb77  
       2017-05-09 09:55:21 +08:00
    cy18
        21
    cy18  
       2017-05-09 10:00:37 +08:00 via Android
    ifttt 啊- -不过不知道企业级之后是不是有数量限制
    ifishman
        22
    ifishman  
       2017-05-09 10:04:10 +08:00 via Android
    楼主需求不是很简单么,按照一楼的思路,如何过滤正常关机的售货机,只需要在售货机开机和关机加入一个注册与注销心跳检测不就行了么
    gemini767
        23
    gemini767  
       2017-05-09 10:06:34 +08:00
    @noah1987 心跳包不是生产出来就通讯,可以当机器开始工作的时候开始通讯,当机器关闭时候结束通讯,中间有断开就挂掉了
    yejinmo
        24
    yejinmo  
       2017-05-09 10:14:16 +08:00
    手撸一个 PHP 很快啊
    - 找个提供 SMTP 的邮件服务商,这里用的阿里云企业邮箱免费版
    - 将 PHPMailer 放置同一目录,https://github.com/PHPMailer/PHPMailer
    <?php
    $text = $_REQUEST['text'];
    $title = $_REQUEST['title'];
    $addr = $_REQUEST['addr'];
    date_default_timezone_set('Etc/UTC');
    require 'PHPMailer-5.2.23/PHPMailerAutoload.php';
    $mail = new PHPMailer;
    $mail->CharSet = "UTF-8";
    $mail->isSMTP();
    $mail->SMTPDebug = 0;
    $mail->Debugoutput = 'html';
    //随便找个 SMTP 邮件服务商
    $mail->Host = "smtp.mxhichina.com";
    $mail->SMTPSecure = 'ssl';
    $mail->Port = 465;
    $mail->SMTPAuth = true;
    $mail->Username = "[email protected]";
    $mail->Password = "password";
    $mail->setFrom('[email protected]', 'account');
    $mail->addReplyTo('[email protected]', 'account');
    $mail->addAddress($addr, $addr);
    $mail->Subject = $title;
    $mail->Body = $text;
    if (!$mail->send())
    {
    echo "邮件发送失败: " . $mail->ErrorInfo;
    } else
    {
    echo "邮件发送成功。";
    }
    ?>
    fuxkcsdn
        25
    fuxkcsdn  
       2017-05-09 10:43:00 +08:00 via iPhone
    要啥邮件呢?
    用 server 酱就得了啊,直接推送到微信
    http://sc.ftqq.com/3.version
    有 wget 或者 curl 就行
    noah1987
        26
    noah1987  
    OP
       2017-05-09 10:54:55 +08:00
    @fuxkcsdn 哈哈哈,这个简单!
    noah1987
        27
    noah1987  
    OP
       2017-05-09 10:55:06 +08:00
    @fuxkcsdn 我试试
    noah1987
        28
    noah1987  
    OP
       2017-05-09 10:55:29 +08:00
    @yejinmo 谢啦。我如果用 php 写,就参考下你的
    skylancer
        29
    skylancer  
       2017-05-09 12:38:49 +08:00
    @noah1987 那为什么不添加的判断,比如曾经有通信的才认为是异常,从来没有通信的忽略呢
    noah1987
        30
    noah1987  
    OP
       2017-05-09 12:41:56 +08:00
    @skylancer 有人可能测试一下就先放一边了。
    skylancer
        31
    skylancer  
       2017-05-09 12:45:22 +08:00
    @noah1987 那就加多几次通信再验证嘛.. 另外在上面加个客服电话不就行了么..
    noah1987
        32
    noah1987  
    OP
       2017-05-09 13:05:50 +08:00
    @skylancer 我在一个人工很贵的国家。。
    Sukizen
        33
    Sukizen  
       2017-05-09 13:24:38 +08:00
    我的项目需要定制自动售货机,楼主能提供点信息吗。
    taurenshaman
        34
    taurenshaman  
       2017-05-09 13:58:59 +08:00
    现在的云计算都提供 Serverless 特性啊,参考:
    AWS 的 Lambda
    Azure 的 Function
    Google Cloud 的 Function
    taurenshaman
        35
    taurenshaman  
       2017-05-09 14:00:05 +08:00
    你要的功能就是一个 HttpTrigger~
    cevincheung
        36
    cevincheung  
       2017-05-09 14:28:11 +08:00
    @noah1987 #3 连接后断开再触发呗,这是自己实现的逻辑问题了。
    skylancer
        37
    skylancer  
       2017-05-09 14:47:43 +08:00
    @noah1987 这个逻辑只能尽量优化,没有最佳方案的,其实基本上这就是最佳解决办法
    jsq2627
        38
    jsq2627  
       2017-05-09 22:15:49 +08:00 via iPhone
    楼主要是自己搞不定,花点钱找人做嘛。这是很简单的一个东西。
    mingyun
        39
    mingyun  
       2017-05-09 23:06:59 +08:00
    @yejinmo 可以
    gamexg
        40
    gamexg  
       2017-11-12 19:02:34 +08:00 via Android
    @noah1987 预防自己的服务器挂掉?
    很简单,你写一个虚拟售货机,模拟正常售货机行为连接服务器,然后检查是否正常即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1839 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:31 · PVG 00:31 · LAX 08:31 · JFK 11:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.