Java Google Mail Api Отправить «Проверка проверки предварительной проверки»-400 Плохой запрос на сервер Сервета Сервета JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java Google Mail Api Отправить «Проверка проверки предварительной проверки»-400 Плохой запрос на сервер Сервета Сервета

Сообщение Anonymous »

В ответ на недавнее изменение Google от запрета пользователя/пароля Доступ к учетным записям Google Workspace от Google Cloud VM-Instances, я пытаюсь заменить вызовы SendMail на вызовы Google API в Gmail API с использованием Java с аутентификацией OAuth2 с использованием учетных записей услуг. Ошибка кажется довольно стандартной с тем, что видят многие другие, без подробностей, чтобы помочь устранению неполадок: < /p>

Код: Выделить всё

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
POST https://gmail.googleapis.com/gmail/v1/users/*****@*****.com/messages/send
{
"code": 400,
"errors": [
{
"domain": "global",
"message": "Precondition check failed.",
"reason": "failedPrecondition"
}
],
"message": "Precondition check failed.",
"status": "FAILED_PRECONDITION"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:118)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:37)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:439)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1111)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:525)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:466)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:576)

После исследования с использованием страниц документации Google и статей Stackoverflow Я выполнил все следующие шаги:

[*] Создал новую учетную запись Service в моем проекте Google Cloud Production и предоставил его основной/редактор

Код: Выделить всё

    public void send(String toEmailAddress, String[] ccEmailAddress, String[] bccEmailAddress, String replyToAddress,
String subject, String htmlBodyText) {
GoogleCredentials credentials;
try {
String json = /** fetch the service account JSON file **/
InputStream stream = new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8));

credentials = ServiceAccountCredentials.fromStream(stream).createScoped(GmailScopes.GMAIL_SEND);

HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials);

// Create the gmail API client
Gmail service = new Gmail.Builder(new NetHttpTransport(), GsonFactory.getDefaultInstance(),
requestInitializer).setApplicationName(MyAppName).build();

// Encode as MIME message
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
MimeMessage email = new MimeMessage(session);
email.setFrom(new InternetAddress(fromEmailAddress));
email.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(toEmailAddress));

if (ccEmailAddress != null) {
for (String addr : ccEmailAddress) {
email.addRecipient(javax.mail.Message.RecipientType.CC, new InternetAddress(addr));
}
}

if (bccEmailAddress != null) {
for (String addr : bccEmailAddress) {
email.addRecipient(javax.mail.Message.RecipientType.BCC, new InternetAddress(addr));
}
}

email.setSubject(subject);
email.setText(htmlBodyText);

// Encode and wrap the MIME message into a gmail message
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
email.writeTo(buffer);
byte[] rawMessageBytes = buffer.toByteArray();
String encodedEmail = Base64.encodeBase64URLSafeString(rawMessageBytes);
Message message = new Message();
message.setRaw(encodedEmail);

try {
// Create send message
message = service.users().messages().send(workspaceAccountEmail, message).execute();
LOGGER.debug("\"Message id: {}, {}", message.getId(),message.toPrettyString());

// return message;
} catch (GoogleJsonResponseException e) {
LOGGER.warn("Caught an {} exception when trying to send mail", e.getClass().getName(), e);
}
// return null;

} catch (IOException | MessagingException e) {
LOGGER.warn("Caught an {} exception when trying to prepare sendmail", e.getClass().getName(), e);
}

}

Google Workspace Improdepace Issersation происходит в коде при вызове функции Google API Send () и передачи в адрес электронной почты учетной записи Workspace.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... t-for-serv
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»