爱意满满的作品展示区。
spance

什么时候 Gmail 里有了未读邮件?有没有主动提醒的办法?如果你也这么想,那么就部署一个 Gmail Notification 帮助我们检查 Gmail 邮箱。

  •  
  •   spance · Sep 18, 2014 · 9831 views
    This topic created in 4299 days ago, the information mentioned may be changed or developed.
    何时应该检查Gmail邮箱有没有未读邮件,大概都要不停的登陆刷新。
    怎么能让新邮件到达给个主动提醒,是我最近一直思考的问题。
    于是查了Google的接口,非常丰富非常丰满,不愧是业界第一邮箱服务。
    所以就诞生这个项目Gmail Notification
    https://github.com/spance/Gmail-Notification

    # Gmail Notification

    对已许可的Gmail邮箱进行检查,发现新邮件后通过已配置的短信接口发送未读邮件的提醒短信。

    利用Google oauth接口访问已授权用户的收件箱,对未读邮件进行分析并发送提醒,同一未读邮件在6小时内不会提醒超过2次(未来这些策略参数可调整),避免长时间未读邮件造成大量短信的骚扰。

    目前,通过console交互方式配置许可授权,在.conf文件中定义接口参数,自动通过cron-job做定时检查。

    每5分钟检查一次,支持多账户,理论上最多可以配置3472222个用户,因为Google API允许每个Client每天可调用1亿次。

    扫描和通信日志在logs目录下,请定时检查并反馈错误。

    ![sms](https://i.imgur.com/43WOaBe.png)

    # 关于隐私和安全性

    邮箱账户通常是私密性的,因此不建议使用第三方服务,应该将程序部署到可信服务器上,专属的为自己或朋友私密的运行。

    Google oauth接口是安全、可靠的,程序通过Google接口获得用户授权,不接触密码,并且用户可随时在Google accounts中吊销授权。

    考虑到存储安全,程序不会读取和存储任何邮件内容包括标题,仅通过邮件id做识别和分析。

    考虑到传输安全,发送的短信中不含有与邮件相关的任何内容,仅包括未读邮件数量,并且mail地址经过了遮掩。

    如果运行程序的服务器是安全的,则整个运作逻辑都是安全和可靠的。

    # 配置和运行

    1、客户端授权

    首先,需要得到Google client credential,这是访问Google API的必要条件。
    访问: https://console.developers.google.com/project
    开启API并创建Client credential,然后下载json文件,命名并放置到`credentials\app_client_secret.json`

    ![g_api_1](https://i.imgur.com/5QM6vlc.png)
    ![g_api_2](https://i.imgur.com/rHUBFmU.png)

    2、配置

    取得一个可用的短信接口(应该基于http/https)及访问办法,请咨询你的短信接口服务商。
    根据服务商提供的方法,配置到`gnoti.conf`中,通常都是GET或POST到服务商api地址。
    详细配置说明请参看`gnoti.conf`中的注释说明。

    3、部署应用

    安装依赖关系:`pip install --upgrade google-api-python-client python-crontab`
    将整个程序放置到具有读写权限的文件夹中,并运行`python gnoti.py --help`查看命令帮助。

    ![help](https://i.imgur.com/LrvpQqS.png)

    4、账户授权

    运行`python gnoti.py -a [email protected]`以向导方式开始账户配置。
    将会生成一个许可url,请账户所有者在其浏览器上执行并同意,将会跳到redirect_uri上(示例中配置到localhost上仅获取code部分)
    再把Url上的code部分粘贴到console中,将会调用Google API获取授权。
    再输入接收短信的电话号码,完成账户配置。

    ![setup](https://i.imgur.com/R0P8dbn.png)

    一切无误后,程序将会每5分钟检查一次用户邮箱,未读且未被提醒超过2次的邮件,将会统计和发送提醒短信。

    *注: 目前大陆是无法访问到Google Api的,因此不要在国内服务器上部署。
    Supplement 1  ·  Sep 18, 2014
    这次是为了更好的保密性、更爽的自定义通知、更屌丝的快感而起的,想带给大家另一个思路另一个方法,看到有人使用代收的方案,我不太建议这么做,这丧失了gmail的私密性,需要向代收方公开gmail密码。

    如果你不能持续翻墙在线含手机、如果你需要更及时的掌握新邮件、如果你需要更爽一点的新邮件通知方式,那么你应该试试这个方案。

    这种方式是需要一些银子的(短信接口),但是如果这种方式能让你得到快感,短信那点钱也就不是问题,我也就很满足了。

    欢迎大家多给意见、多发pull.
    Supplement 2  ·  Sep 19, 2014
    # 适用场景

    - 不想公开Gmail密码给第三方的
    - 不能/不便持续Gmail在线的
    - 不想使用邮件客户端残留邮件副本
    - 想要更及时的通知
    - 想要更爽的自定义通知
    - 想要更安全、更具隐私性的方式

    本方案就是考虑上面的场景需求,做专业的私人定制。
    50 replies    2014-09-19 14:28:06 +08:00
    princeofwales
        1
    princeofwales  
       Sep 18, 2014   ❤️ 1
    chrome上有扩展
    android上有官方app
    新邮件都会及时提醒啊
    很多时间app比chrome还要快
    wzxjohn
        2
    wzxjohn  
       Sep 18, 2014
    @princeofwales 实际上墙内人民装啥App都没用。。。
    jsonline
        3
    jsonline  
       Sep 18, 2014 via Android
    邮件客户端啊。。。。
    surftheair
        4
    surftheair  
       Sep 18, 2014
    电脑上用网页版,移动设备上用mailbox app,推送即时。sms就算了,不然手机要炸了
    spance
        5
    spance  
    OP
       Sep 18, 2014
    @princeofwales
    chrome扩展需要chrome一直挂代理一直开着,android app需要android挂代理。
    如果需要更方便的,那就试试这个把。
    20150517
        6
    20150517  
       Sep 18, 2014 via Android
    ip装个gmail应用或者安卓手机不都有gmail提醒吗?
    surftheair
        7
    surftheair  
       Sep 18, 2014
    @spance 我想说的是,在镇内既然在用gmail的肯定都是有翻墙方法的。 短信提示你有几封未读邮件真的没什么用途啊,建议探索一下其他的用途
    20150517
        8
    20150517  
       Sep 18, 2014 via Android
    @spance 代理装在网关上啊
    xjx0524
        10
    xjx0524  
       Sep 18, 2014
    我用qq邮箱设置了收取gmail邮件,然后微信又会有邮件提醒,基本上够用了
    spance
        11
    spance  
    OP
       Sep 18, 2014
    @surftheair
    @20150517
    @66beta
    我知道有google有扩展、有代理,都很好,我也在用。在不长时间开代理、经常转换电脑、或者时常不在电脑旁,等等,要怎么办。
    我只是寻找一个新邮件到达时最省事最方便的途径,我只是想知道现在有未读邮件,至于什么时候读、用什么方式读,那就是后话了,要看当时有没有时间有没有心情。
    spance
        12
    spance  
    OP
       Sep 18, 2014
    @xjx0524
    事实上转发到139邮箱也有短信,但是这么一来对139对qq就透明了,丢失了gmail的意义了。
    而且作为节操控定制控,希望给自己的提醒短信,自己可以定制,其实很简单,就是为了让自己爽而已。
    MinonHeart
        13
    MinonHeart  
       Sep 18, 2014 via Android
    测试了一下,QQ邮箱发到Gmail后,手机Gmail在12分钟后收到了邮件,自动提醒,不需要特殊姿势。不过楼主这也不错,赞个
    JoyNeop
        14
    JoyNeop  
       Sep 18, 2014 via iPhone
    IMAP/POP3 怒刷存在感……
    no13bus
        15
    no13bus  
       Sep 18, 2014
    @spance 短信接口你是怎么做的?
    spance
        16
    spance  
    OP
       Sep 18, 2014
    @JoyNeop 你体力真好,赞一个!
    spance
        17
    spance  
    OP
       Sep 18, 2014
    @no13bus 我不提供短信接口,我也没写推荐的短信商,否则要被说打广告了。
    你可以自己搜索,国内发短信的也很多,国外的也有更多。国内商发国内,大概1毛钱,国外商法国内,大概3-4毛钱。一个月发个几百条也没几个钱的,只要觉得爽花个几块钱也是值得的。
    smileawei
        18
    smileawei  
       Sep 18, 2014
    ios的官方邮件客户端是可以正常收发Gmail的
    no13bus
        19
    no13bus  
       Sep 18, 2014
    @spance nice.知道了。pullbullet也不错
    spance
        20
    spance  
    OP
       Sep 18, 2014
    @smileawei 是的,只要是pop3/imap的邮件客户端,都可以收到邮件。
    iOS上Mail是可以跑后台的,但是他的检查周期比较长,而且要占存储,所以我就搞了这个比较省事而且可以比较爽的办法。
    GhostFlying
        21
    GhostFlying  
       Sep 18, 2014
    = = 全天翻墙的表示直接看Chrome/Android 推送就好了
    spance
        22
    spance  
    OP
       Sep 18, 2014
    @GhostFlying 也不错。当然能24小时持续代理的且不离开电脑的人毕竟还是不多的。
    qq2511296
        23
    qq2511296  
       Sep 18, 2014
    qq邮箱代收GMail表示无压力
    spance
        24
    spance  
    OP
       Sep 18, 2014
    @qq2511296 代收很省事,但你需要告诉腾讯你的密码。如果你想要更高的安全性,更爽的自定义通知,那是试试这个吧。
    krafttuc
        25
    krafttuc  
       Sep 18, 2014
    轮询的速度不如 IMAP IDLE 吧。而且防火墙目前还没有对 Gmail IMAP 接口动手。
    Tink
        26
    Tink  
    PRO
       Sep 18, 2014 via iPhone
    这邮件少的话还行,100-200封的,那你手机受得了吗?
    spance
        27
    spance  
    OP
       Sep 18, 2014
    @Tink 一个时间段扫描一次,发送一个总数量,并不是一个未读就发送一个短信。现在是5分钟间隔,那么理论上一天最多是288条,如果有一直未读的,提醒过了就不再发了。
    spance
        28
    spance  
    OP
       Sep 18, 2014
    @Tink 轮询的速度是可以调节的。imap意味着要在非Google区域使用密码,imap也不是发短信。这个方案的目的是有快感的自定义的短信通知。
    Vanson
        29
    Vanson  
       Sep 18, 2014
    邮件客户端会不定时检查邮箱的新邮件
    lu18887
        30
    lu18887  
       Sep 18, 2014
    @wzxjohn apple 自带邮件客户端没问题
    egen
        31
    egen  
       Sep 18, 2014
    @wzxjohn accompli 值得一试
    hahastudio
        32
    hahastudio  
       Sep 18, 2014
    做出来这么个东西,感觉真的很厉害

    -虽然应该先想一想有没有用-
    我这边的情况是,手机上 GMail 能够拿到未读个数
    但是要看内容需要翻
    感觉跟你这个拿短信搞出来的效果差不多= =
    我好像是改过 hosts
    spance
        33
    spance  
    OP
       Sep 18, 2014
    @hahastudio 多谢。
    其实我的想法很简单,不想给手机倒腾代理,iOS也不好弄。而且不一定经常在有代理的电脑旁,等短信来了就在代理机上看看,顺便可以挂几个别人的账号也帮着提醒下。
    goodbest
        34
    goodbest  
       Sep 18, 2014
    虽然开发不容易,但是lz你可以试试ios上的gmail官方客户端啊...直接有推送的。
    myang
        35
    myang  
       Sep 18, 2014
    既然lz做这个的初衷是在不能持续翻墙的情况下及时知道有新邮件,问题是不能翻墙看邮件,你再及时知道有新邮件又有什么用处呢?不能点开看的通知是一点爽快感都不会有的啊……
    zhenghuiy
        36
    zhenghuiy  
       Sep 18, 2014
    网易邮箱/邮箱大师添加gmail,都有提醒啊。
    spance
        37
    spance  
    OP
       Sep 18, 2014
    @myang 提醒的初衷就是快速、安全、自定义,该通知的通知到,不该通知的就沉默。
    能不能看、什么时候看、要不要翻墙看那是用户的后续行为,与该应用无关了。

    @zhenghuiy 请看帖子下方的第一条附言。
    lifechan
        38
    lifechan  
       Sep 18, 2014
    我的手机都有提醒,还是wp系统。。。
    expkzb
        39
    expkzb  
       Sep 18, 2014 via iPhone
    ifttt
    sadaharu09
        40
    sadaharu09  
       Sep 18, 2014
    Windows 8上面有Mail,Mac OS上有Mail。
    mulog
        41
    mulog  
       Sep 18, 2014
    思路倒是不错 就是这需求好像太个性化了。。。
    jaylong
        42
    jaylong  
       Sep 18, 2014
    我会告诉你我早就把gmail收件自动转发到139邮箱然后收免费短信通知了吗?
    xcv58
        43
    xcv58  
       Sep 19, 2014
    感觉我用 Mailbox 的次数至少比短信多一个数量级。 不过这样不是更方便: http://cl.ly/image/2l3K46382N26
    YonionY
        44
    YonionY  
       Sep 19, 2014
    直接POP或IMAP不就得了,哪里需要这么麻烦
    chagel
        45
    chagel  
       Sep 19, 2014
    这个需求是有的,尤其是伟大的墙的存在,近来手动刷mail的频率显然变高

    解决方案有很多,既然楼主用这种重口的实现方式了,就不要polling了,用imap的idle实现实时吧
    http://tools.ietf.org/html/rfc2177
    spance
        46
    spance  
    OP
       Sep 19, 2014
    @sadaharu09
    @jaylong
    @YonionY
    @chagel
    请参看“第2条附言”。

    @expkzb
    你很厉害,ifttt是我之前也发现的,但其黑箱操作不够放心,于是就自己写做成开源。
    欢迎试用,多提意见,多发pull
    chagel
        47
    chagel  
       Sep 19, 2014
    我换种说法吧,只是检查新邮件与其用强大的Google API,有些轻量的接口比如Inbox Feed可能更合适:
    https://developers.google.com/gmail/gmail_inbox_feed

    没有看项目代码,但看有每5分钟的Polling,那还不如在代码中用IMAP协议请求,还能达到实时检测目的:
    https://developers.google.com/gmail/imap_extensions
    hslx111
        48
    hslx111  
       Sep 19, 2014
    感觉这样的需求不会很强烈,大多数人还是会用客户端的。
    YonionY
        49
    YonionY  
       Sep 19, 2014
    @spance 我很奇怪为什么会有这样奇怪的需求。新邮件知道强迫症?

    1.没有邮件标题,你并不知道是什么邮件,难道收到一条提醒就去看一下吗?不知道为什么最近Gmail无法过滤一些垃圾邮件,遇到这样的你就很爽了。

    2.如果不需要收到一条就看一次,那这样即使没有提醒也会定时查看,那提醒不就毫无意义了吗?

    3.存储安全我觉得服务器比手机更不可靠,手机加密(并非手势密码)一下没有密码邮件残留数据很难泄露出去,如果手机全局加密都能被破解的,我想你更多需要考虑的是人身安全了。

    4.如你所诉短信内容并无机密信息,其实只需要把短信内容给139/189邮箱发邮件并开通短信提醒,一个月几百条免费提醒短信应该也够了,虽然我觉得这样的需求很是蛋疼。
    spance
        50
    spance  
    OP
       Sep 19, 2014
    @YonionY
    1,邮件标题属于邮件内容一部分,不应该在不可靠传输途径的明文发送。垃圾邮件也是邮件,本质上与其它邮件并无区别,只要被Gmail收入收件箱,那就是需要阅读的对象,至于阅读结果的评判与应用无关。

    2、应用的目的是提醒,告知有未读存在,至于该不该读、什么时候读是用户的选择,让阅读邮件由主动阅读变为事件驱动式阅读。

    3、服务器和手机谁更安全,是因人而异因地而异,不是你觉得x、我觉得y的问题。

    4、我们玩的是高级定制,你要想玩139服务没有任何问题,这只是喜好取向不同。

    第1,2附言也都有说明。

    还有,在你没有完全理解应用需求和场景的时候,请你小心的使用诸如“蛋疼”这样的词汇。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5643 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 118ms · UTC 06:29 · PVG 14:29 · LAX 23:29 · JFK 02:29
    ♥ Do have faith in what you're doing.