gpt4 book ai didi

yahoo - 使用 YQL 从 Yahoo Mail 访问新邮件

转载 作者:行者123 更新时间:2023-12-01 06:38:18 26 4
gpt4 key购买 nike

我目前正在编写一个 JAVA 应用程序,我需要在其中访问来自用户 Yahoo 电子邮件的以下信息(以显示给他们)。 YQL 看起来像是一种“快速简便的方法”,但事实证明它更加困难。我运行的所有测试都在这里完成:http://developer.yahoo.com/yql/console/我可以使用我的 webapp/oauth 复制相同的结果。

  • 发件人邮箱
  • 发件人姓名
  • 主题
  • 留言
  • 日期

  • 我无法将所有这些都整合到 1 个查询调用中(甚至 2 个,尽管我没有投入太多时间来研究它作为解决方案)。这是它的简短内容,目前我有以下 YQL:
    SELECT folder.unread, message FROM ymail.msgcontent
    WHERE (fid,mids )
    IN
    (SELECT folder.folderInfo.fid, mid
    FROM ymail.messages
    WHERE numMid=2
    AND startMid=0)
    AND fid='Inbox'
    AND message.flags.isRead=0;

    这在我拥有的所有解决方案中效果最好,但是存在一个严重的严重缺陷。如果我们有 10 封电子邮件,E1 - E10,并且除 E2、E3 之外它们都未读,那么在运行该查询后,结果集将显示 E1,而不是 E1、E4。显然这并不好。所以我尝试在子选择中插入“AND message.flags.isRead=0”:
    SELECT folder.unread, message FROM ymail.msgcontent
    WHERE (fid,mids )
    IN
    (SELECT folder.folderInfo.fid, mid
    FROM ymail.messages
    WHERE numMid=10
    AND startMid=0
    AND message.flags.isRead=0)
    AND fid='Inbox'

    但是,这会导致结果为“空”。为了调试这个,我只运行子选择并想出这个:
    SELECT folder.folderInfo.fid, mid
    FROM ymail.messages
    WHERE numMid=10
    AND startMid=0
    AND messageInfo.flags.isRead=0

    这个查询返回10,不幸的是,经过进一步审查,它没有过滤掉已读VS未读。经过一番折腾之后,我将 select 语句更改为以下查询:
    SELECT folder.folderInfo.fid, messageInfo.mid
    FROM ymail.messages
    WHERE numMid=10
    AND startMid=0
    AND messageInfo.flags.isRead=0

    最后,这有效!除了 47 封电子邮件,而不是 10 封。为了让事情变得更有趣,我知道我的收件箱中有 207 封(未读)电子邮件,那么为什么是 47 封?我已将“numMid”(将其视为要显示的数量)从 0 - 300 和 startMid(要开始的电子邮件数量,例如偏移量)从 0 - 300 更改为 0 - 300,并且都没有更改结果集计数。当然,当我将 select 语句从“messageInfo.mid”更改回“mid”时,numMid/startMid 再次“工作”,但是从他 isRead 的过滤不再有效。我知道还有其他解决方案,我设置了 numMid=50000 或类似的东西,但是 YQL 开始时有点慢,我只能想象这会显着减慢它的速度。

    那么问题来了,有人这样做过吗? YQL 刚刚坏了/没有维护还是我做错了什么?

    谢谢!

    编辑 :显然,出现的这个“47”来自我收到的前 50 封电子邮件,其中 3 封已阅读。我还没有弄清楚如何“欺骗”YQL 以允许我覆盖这个 50 限制。

    最佳答案

    有点晚了,但我想我有你的问题的答案。

    您的查询几乎是正确的,除了 numInfo查询参数。尝试将查询更改为

    SELECT * FROM ymail.messages WHERE numMid=75 AND startMid=0 AND numInfo=75 AND messageInfo.flags.isRead=0



    注意 numInfo=75 .这应该会为您提供最后 75 条未读消息。要阅读有关不同查询参数的更多信息,请参阅官方文档 here

    编辑 1
    默认情况下,表 ymail.messages 应返回未读消息。有一个 GroupBy如果要获取未读消息,应使用该参数。查找文档 here

    关于yahoo - 使用 YQL 从 Yahoo Mail 访问新邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13054315/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com