Gmail APIを使用してApp Engineにメールを送信しようとしています。以前は、資格情報ページにサービスアカウントキーを作成し、setServiceAccountPrivateKeyFromP12Fileパラメータにある.P12ファイルを生成しました。これには、アカウントの[email protected]にサービスアカウントページに結合されたIDキーがあります。コード:それは私にこのエラーが返されますGmail APIを使用してメールを送信するGoogle App Engine
/* Application name. */
private static final String APPLICATION_NAME = "appnamefromappengine";
String emailAddress = "[email protected]";
JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
try {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
Set<String> scopes = new HashSet<String>();
scopes.add(GmailScopes.GMAIL_SEND);
scopes.add(GmailScopes.GMAIL_COMPOSE);
scopes.add(GmailScopes.MAIL_GOOGLE_COM);
scopes.add("https://www.googleapis.com/auth/admin.directory.user");
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(emailAddress)
.setServiceAccountPrivateKeyFromP12File(new File("/home/myuser/Test/src/main/webapp/resources/**somename**cd30e7118ad5.p12"))
.setServiceAccountScopes(scopes)
.setServiceAccountUser("[email protected]")
.build();
Gmail gmail = new Gmail
.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME)
.build();
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress("[email protected]"));
message.setSubject("Test Mail");
message.setText("Test Mail");
Message msg = createMessageWithEmail(message); //createMessageWithEmail function from Gmail API
msg = gmail.users().messages().send(emailAddress, msg).execute();
System.out.println("Mail was sent. Message id: " + msg.getId());
} catch (GeneralSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request { "code" : 400,
"errors" : [ { "domain" : "global", "message" : "Bad Request", "reason" : "failedPrecondition" } ],
"message" : "Bad Request" }
は、私はコード内やGoogleクラウドコンソールにここで間違って設定していたパラメータわかりません。それ以外に何ができますか?
チェック[GmailのREST API:400不正な要求+失敗した前提条件](http://stackoverflow.com/questions/29327846/gmail-rest- api-400-bad-request-failed-precondition): – KENdi
@KENdiが提供するリンクは役に立ちましたか?失敗した前提条件を絞ったり解決したりできましたか? – Nicholas
それは@ニコラスだった。問題は、サービスアカウントへの委任ドメイン全体の権限を管理コンソールに設定しなかったことです。いずれにしても、誰かがGmail APIを使用してメールを送信したい場合は、すべてのコードが完全に機能しています。質問は、コードに電子メールAPIの承認された送信者を使用する方法の答えを補完することができます。誰かがそのセクションに電子メールを登録したら、その電子メールを参照する方法。全てに感謝。 –