Я работаю над студенческим проектом, где мне нужно использовать GMAIL API (Java), чтобы подключаться к почтовому серверу, получать новые сообщения и загружать вложения, если они есть. Я уже сделал это с помощью JavaMail API , но почтовый сервер, который должен использовать приложение, не принимает протоколы IMAP и POP3 , у него есть собственный веб-сервис.
У меня две проблемы.
У меня проблемы даже со стартовым проектом в eclipse . Во-первых, я понятия не имею, как настроить соединение с почтовым сервером (например, учетную запись Gmail) и как указать имя пользователя и пароль. Я видел, что gmail api для авторизации использует Oauth2 .
Второй, возможно, решить проще. Когда я установил соединение с почтовым сервером, как получать невидимые письма и загружать вложения?
Я думаю, что вторую часть я мог бы сделать сам, но без подключения даже бесполезно пытаться . Я читал официальную документацию несколько дней и совершенно запутался.
(Возможно, если у вас есть образец кода или аналогичный пример, было бы неплохо)
EDIT 1:
Сделано, теперь у меня эта ошибка
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
.setAccessType("offline")
.build();
setAccessType не найден в com.google.api.client.auth.oauth2. AuthorizationCodeFlow.Builder
Все импорты из Quickstart есть.
EDIT 2:
Я очень запутался сейчас
Exception in thread "main" java.io.FileNotFoundException: Resource not found: /resources/credentials.json
Строка:
private static final String CREDENTIALS_FILE_PATH = "/resources/credentials.json";
Организация файлов и папок
Когда я проверяю System.out.print(System.getProperty("user.dir"));
Я получаю F:\NBS\eclipse\FetchMail
РЕДАКТИРОВАТЬ 3:
Удалены все файлы и начато заново, но затмение по-прежнему выглядит слепым Файл не найден
РЕДАКТИРОВАТЬ 4:
Протестированный метод .getResourceAsStream(path)
внутри основного метода, и он находит учетные данные. json внутри \eclipse\FetchMail
или любого другого файла, который мне нужен
Затем переместил файл в \eclipse\FetchMail\resources
и позвонил .getResourceAsStream("/resources/credentials.json")
также находит файл.
Но если попробовать это в методе getCredentials
из Quickstart , появляется FileNotFound exception
.
private static final String CREDENTIALS_FILE_PATH = "/resources/credentials.json";
private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException {
// Load client secrets.
InputStream in = Main.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
if (in == null) {
throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
}
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
.setAccessType("offline")
.build();
LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
}