首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
拉钩
V2EX  ›  Python

如何做到邮件实时收取?

  •  
  •   ft3312591 · 51 天前 · 2473 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    另一个小秘密:所有使用 Exchange 的用户都是实时收取的。
        13
    shyling   50 天前 via Android
    Exchange Active Sync, Mapi 系列可以

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

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

    另外 fetchmail 不了解一下?曾经电子邮件界的明星程序
        18
    iwtbauh   50 天前 via Android
    @geelaw

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

    但作为邮件服务器不存在“ SMTP 不实时”这种说法(它根本不 make sense ),因为邮件到达服务器才算收到,或者说服务器收到邮件的时刻才定义了这封邮件的“实时”。
        21
    iwtbauh   50 天前 via Android
    @geelaw #20

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

    使用 SMTP 收信的客户端很多啊,MTA 都是啊,以前用的最多的就是 sendmail。这东西还是曾经很多 Unix 系统的标配。
        22
    wsds   48 天前
    @geelaw 怎么开?
        23
    wsds   48 天前
    @geelaw 我用的就是 Exchange,但 outlook 收信一直晚于网页是怎么回事,收集间隔设置的最小 1 分钟
        24
    tz1006   43 天前
    一般实时的我都用 queue.get()
    线程循环 queue.put()
    你听得懂我在说什么吗?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3136 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 19ms · UTC 04:41 · PVG 12:41 · LAX 20:41 · JFK 23:41
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1