我一直致力于连接Yahoo邮件的Java应用程序,以便用户搜索他们的Yahoo电子邮件。
最近,雅虎突然(仅提前5周通知)停止使用雅虎邮箱API,我们正在使用它,效果很好。然后我们重新设计并切换到YQL。不幸的是,由于不明原因,本周也停止了工作。端点不断返回错误。即使YQL确实有效,也偶尔会出现零星的情况。甚至Yahoo YQL控制台也会返回错误。我们尝试使用JavaMAIL IMAP访问来搜索邮件。我们可以连接到IMAP服务器,但不支持JavaMAIL搜索术语。我一直收到错误“SEARCH Server error - 请稍后再试”。相同的代码适用于其他IMAP服务(如Aol邮件)。
所以基本上,随着Yahoo Mail API的消失,YQL无法正常运行,以及IMAP不支持搜索,目前还没有以编程方式搜索Yahoo邮件的方式?雅虎一直告诉我们,用于IMAP访问的Yahoo API就是前进的方向(参见https://developer.yahoo.com/mail/)。但这还没有实现,并且没有正常运行的文档。发送电子邮件到imap-service@yahoo-inc.com是没用的,因为无论如何都没有人回复。他们应该从Facebook上了解如何管理变更和维护开发人员关系的一两件事。
有没有人有另外的方法以编程方式搜索Yahoo Mail以获取带有Java的电子邮件?
感谢。
答案 0 :(得分:1)
我设法通过OAuth 2.0获得与Yahoo合作的IMAP访问权限,但这段代码是用Python编写的:
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])