V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ft3312591
V2EX  ›  Python

如何做到邮件实时收取?

  •  
  •   ft3312591 · 2018-10-23 10:45:28 +08:00 · 7467 次点击
    这是一个创建于 1983 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 python 写了个下载邮件附件的脚本,在 windows 计划任务里做了个 1 分钟循环定时。有没有办法改成实时接收?如果写 while 循环的话,一直重复登录邮箱是不是不太好,能否实现监听邮箱有新邮件再运行

    24 条回复    2018-10-31 05:14:07 +08:00
    gstqc
        1
    gstqc  
       2018-10-23 10:49:49 +08:00 via Android   ❤️ 1
    IMAP POP3 都没有推送,只能定时查询
    Exchange ActiveSync 了解下
    kernel
        2
    kernel  
       2018-10-23 10:50:55 +08:00
    一直登录有啥不好?
    opengps
        3
    opengps  
       2018-10-23 10:50:59 +08:00
    其实 foxmail 这种也是定时去刷新登录的
    jimzhong
        4
    jimzhong  
       2018-10-23 10:52:34 +08:00
    XuJianHua
        5
    XuJianHua  
       2018-10-23 11:15:07 +08:00 via iPhone
    监控
    locoz
        6
    locoz  
       2018-10-23 12:04:18 +08:00
    邮件服务商没有提供可以推送的协议的话,就只能轮询了
    qilishasha
        7
    qilishasha  
       2018-10-23 12:37:52 +08:00 via iPhone
    自建邮件服务器就可以实时 其他登录后抓取就是了
    geelaw
        8
    geelaw  
       2018-10-23 12:51:41 +08:00
    你开着 Outlook 2016 然后用 Outlook object model 检查新邮件就行了。
    nolo
        9
    nolo  
       2018-10-23 12:56:37 +08:00
    自动转发到 sendcloud 或者 mailgun,然后创建一个收信路由。
    zhjits
        10
    zhjits  
       2018-10-23 13:02:42 +08:00
    首先 SMTP 不是 realtime 协议,所以我觉得实时收取这个需求本身是不存在的。
    一定要尽量快的话,IMAP 有 Push 扩展可以试试(效果也就那样)
    DavidNineRoc
        11
    DavidNineRoc  
       2018-10-23 13:04:17 +08:00
    前端轮询, 或者后台轮询然后主动推给前端
    geelaw
        12
    geelaw  
       2018-10-23 13:05:42 +08:00
    @zhjits 小秘密:SMTP 甚至不是一个收信协议!

    另一个小秘密:所有使用 Exchange 的用户都是实时收取的。
    shyling
        13
    shyling  
       2018-10-23 13:08:39 +08:00 via Android
    Exchange Active Sync, Mapi 系列可以

    EWS 也要手动
    passerbytiny
        14
    passerbytiny  
       2018-10-23 13:47:45 +08:00
    楼上已经说了,传统 Email 服务的协议 SMTP、POP3、IMAP 都是没有推送这一块的,所以你只能轮询。至于为什么这样设计,因为普通邮递就是这样的,不加钱就只送到邮箱。
    af463419014
        15
    af463419014  
       2018-10-23 15:18:33 +08:00
    我用的方法可能不高大上,但比较实用吧

    直接转发到 QQ 邮箱,然后来邮件了微信就会马上滴滴滴
    psuwgipgf
        16
    psuwgipgf  
       2018-10-23 16:00:08 +08:00
    我用 GMail 收信比较及时,只慢一两分钟的样子,你自己写程序话,可以找找有 api 提供邮箱吧
    iwtbauh
        17
    iwtbauh  
       2018-10-23 19:05:23 +08:00 via Android
    SMTP 啊(如果你有公网 IP ),要知道以前的时候 sendmail 都是 Unix 发行版的标配。

    另外 fetchmail 不了解一下?曾经电子邮件界的明星程序
    iwtbauh
        18
    iwtbauh  
       2018-10-23 19:13:56 +08:00 via Android
    @geelaw

    SMTP 怎么不是收信协议了。SMTP 是简单邮件“传输”协议,传输包括收和发两部分!
    msa 和 mta 前者发后者收和发,都是 SMTP 的实现。
    当然不是收到信箱里,收到信箱里不叫收,叫“投递”
    cz5424
        19
    cz5424  
       2018-10-23 19:22:39 +08:00 via iPhone
    设置自动转发到自己服务器
    geelaw
        20
    geelaw  
       2018-10-23 23:47:17 +08:00 via iPhone
    @iwtbauh #18 除非你是邮件服务器,目前我不 aware of 任何用 SMTP 收邮件的客户端。

    但作为邮件服务器不存在“ SMTP 不实时”这种说法(它根本不 make sense ),因为邮件到达服务器才算收到,或者说服务器收到邮件的时刻才定义了这封邮件的“实时”。
    iwtbauh
        21
    iwtbauh  
       2018-10-24 08:07:48 +08:00 via Android
    @geelaw #20

    对啊,所以说 SMTP 并不能说“不是收信协议”。它是传输协议,既发也收

    使用 SMTP 收信的客户端很多啊,MTA 都是啊,以前用的最多的就是 sendmail。这东西还是曾经很多 Unix 系统的标配。
    wsds
        22
    wsds  
       2018-10-25 13:59:08 +08:00
    @geelaw 怎么开?
    wsds
        23
    wsds  
       2018-10-25 14:00:07 +08:00
    @geelaw 我用的就是 Exchange,但 outlook 收信一直晚于网页是怎么回事,收集间隔设置的最小 1 分钟
    tz1006
        24
    tz1006  
       2018-10-31 05:14:07 +08:00
    一般实时的我都用 queue.get()
    线程循环 queue.put()
    你听得懂我在说什么吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2587 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 15:55 · PVG 23:55 · LAX 08:55 · JFK 11:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.