2015-03-15 2 views
2

Я работаю над Java-приложением, которое подключается к почте Yahoo, чтобы пользователь мог выполнять поиск по электронной почте своего Yahoo.Невозможно искать Yahoo Mail программно с Java?

В последнее время Yahoo внезапно (с уведомлением всего за 5 недель) прекратил использование Yahoo Mail API, который мы использовали и отлично работали. Затем мы переработали и переключились на YQL. К сожалению, по неизвестным причинам это тоже перестало работать с этой недели. Конечная точка продолжает возвращать ошибку. Даже когда YQL действительно работал, это было случайным и спорадическим. Даже консоль Yahoo YQL возвращает ошибки. Мы попытались использовать доступ к IMAP IMMAIL для поиска сообщений. Мы можем подключиться к серверу IMAP, но условия поиска JavaMAIL не поддерживаются. Я продолжаю получать сообщение об ошибке «Ошибка сервера поиска - повторите попытку позже». Тот же код отлично подходит для других служб IMAP (например, Aol mail).

Так что, в отличие от Yahoo Mail API, YQL не работает, а IMAP не поддерживает поиск, нет программного способа поиска почты Yahoo прямо сейчас? Yahoo продолжает сообщать нам, что Yahoo API для доступа к IMAP - это путь вперед (см. Здесь https://developer.yahoo.com/mail/). Но это еще не живое, и нет действующей документации. Отправка электронной почты на [email protected] была бесполезной, так как никто в любом случае не отвечает на это. Они должны узнать кое-что из Facebook о том, как управлять изменениями и поддерживать отношения с разработчиками.

Есть ли у кого-нибудь альтернативное средство для программного поиска Yahoo Mail для электронных писем с Java?

Спасибо.

ответ

1

мне удалось получить доступ по протоколу IMAP работает с Yahoo через OAuth 2.0, но этот код в Python:

  1. Следуйте инструкциям здесь, чтобы обновить маркер пользователя: https://developer.yahoo.com/oauth2/guide/index.html#refresh-token-label (вы можете использовать refresh_token что вы получили с помощью OAuth 1.0)
  2. Заменить email_address и access_token в следующем коде:

import logging 
 
import imaplib 
 
import datetime 
 
import quopri 
 
import hashlib 
 

 
endpoint = 'imap.mail.yahoo.com' 
 
email_address = '[email protected]' 
 
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])

Смежные вопросы