3

我一直在开发一个连接到 Yahoo 邮件的 Java 应用程序,以使用户能够通过他们的 Yahoo 电子邮件进行搜索。

最近,雅虎突然(仅提前 5 周通知)停止使用雅虎邮件 API,我们正在使用它并且工作得很好。然后我们重新设计并切换到 YQL。不幸的是,由于未知原因,这也从本周开始停止工作。端点不断返回错误。即使 YQL 确实有效,它也是偶尔的和零星的。甚至 Yahoo YQL 控制台也在返回错误。我们已经尝试使用 JavaMAIL IMAP 访问来搜索邮件。我们可以连接到 IMAP 服务器,但不支持 JavaMAIL 搜索词。我不断收到错误“搜索服务器错误 - 请稍后再试”。相同的代码适用于其他 IMAP 服务(如 Aol 邮件)。

所以基本上,随着 Yahoo Mail API 消失,YQL 不工作,IMAP 不支持搜索,现在就没有编程方式搜索 Yahoo 邮件了吗?雅虎不断告诉我们,用于 IMAP 访问的雅虎 API 是前进的方向(请参阅此处https://developer.yahoo.com/mail/)。但这还没有上线,也没有有效的文档。向 imap-service@yahoo-inc.com 发送电子邮件是没有用的,因为无论如何都没有人回复。他们应该从 Facebook 学习一两件事,了解如何管理变更和维护开发者关系。

有没有人有另一种方法来以编程方式在 Yahoo Mail 中搜索带有 Java 的电子邮件?

谢谢。

4

1 回答 1

1

我设法通过 OAuth 2.0 让 IMAP 访问与 Yahoo 一起工作,但这段代码是在 Python 中:

  1. 按照此处的说明刷新用户的令牌: https ://developer.yahoo.com/oauth2/guide/index.html#refresh-token-label (您可以使用通过 OAuth 1.0 收到的 refresh_token)
  2. 替换以下代码中的 email_address 和 access_token:

import logging
import imaplib
import datetime
import quopri
import hashlib

endpoint = 'imap.mail.yahoo.com'
email_address = 'REPLACE_THIS@yahoo.com'
access_token = 'REPLACE_THIS'
auth_string = 'user=%s\1auth=Bearer %s\1\1' % (email_address, access_token)
imap_conn = imaplib.IMAP4_SSL(endpoint) # the IMAP server we're connecting to
imap_conn.debug = 3 # for logging purposes
imap_conn.authenticate('XOAUTH2', lambda x: auth_string)
folders = imap_conn.list()
print folders
imap_conn.select('Inbox', readonly=True)

result, data = imap_conn.uid('search', None, '(FROM "Amazon.com")')
messages = data[0].split()
print 'messages:' + str(messages)

uids_to_fetch = ','.join(messages)
result, data = imap_conn.uid('fetch', uids_to_fetch, 'RFC822')

for counter, message in enumerate(data[::2]):# every other item in the list is not a message, but ")" so we skip it
    # yield raw mail body, after decoding the quoted-printable encoding
    print quopri.decodestring(message[1])

于 2015-04-08T00:16:34.483 回答