0

gmail api を使用してメタデータだけでなくメッセージ全体を取得するにはどうすればよいですか?

私はサービス アカウントを持っており、メッセージを取得できますが、メタデータ、未加工、および最小限の形式でのみ取得できます。完全なメッセージを完全な形式で取得するにはどうすればよいですか? 次のコードは正常に動作します

var request = service.Users.Messages.Get(userId, messageId);
request.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Metadata;
Message message = request.Execute();

ただし、形式を省略した場合 (したがって、デフォルトの形式である FULL を使用する)、または形式をUsersResource.MessagesResource.GetRequest.FormatEnum.Full 次のように変更すると、エラーが発生します。Metadata scope doesn't allow format FULL

次のスコープを含めました。

https://www.googleapis.com/auth/gmail.readonly, 
https://www.googleapis.com/auth/gmail.metadata,
https://www.googleapis.com/auth/gmail.modify,
https://mail.google.com/

完全なメッセージを取得するにはどうすればよいですか?

4

3 に答える 3

1

SO投稿のユーザーには同じエラーがあります。

まずこれを試してください。

  1. https://security.google.com/settings/security/permissionsに移動します
  2. 使用しているアプリを選択します。
  3. [削除] > [OK] をクリックします。
  4. 次回は、必要な権限を正確にリクエストしてください。

別のこととして、それを使用gmailMessage.payload.parts[0].body.dataして読み取り可能なテキストにデコードしてみてください。SO 投稿から次の操作を行います。

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.StringUtils;

System.out.println(StringUtils.newStringUtf8(Base64.decodeBase64(gmailMessage.payload.parts[0].body.data)));

これを確認して、さらに参照することもできます。

于 2017-08-10T09:27:09.670 に答える