【问题标题】:How do I get the contents of all e-mail from a user in Gmail API?如何在 Gmail API 中从用户那里获取所有电子邮件的内容?
【发布时间】:2015-02-03 02:16:37
【问题描述】:

我正在制作一个应该使用 Gmail API 接收 Gmail 用户电子邮件的应用程序。但是,我必须接收每封电子邮件的内容、发件人、主题和接收日期等数据。以前有人实现过吗?

按照谷歌上的部分,我只能获取 ID 和线程每个电子邮件 ID:

public class GmailApiQuickstart {

// Check https://developers.google.com/gmail/api/auth/scopes for all available scopes
private static final String SCOPE = "https://www.googleapis.com/auth/gmail.readonly";
private static final String APP_NAME = "GmailApiQuickstart";
private static final String USER = "me";
// Path to the client_secret.json file downloaded from the Developer Console
private static final String CLIENT_SECRET_PATH = "c:/client_secret.json";

private static GoogleClientSecrets clientSecrets;

public void buscar() throws IOException {
HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();

clientSecrets = GoogleClientSecrets.load(jsonFactory,  new FileReader(CLIENT_SECRET_PATH));

// Allow user to authorize via url.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
httpTransport, jsonFactory, clientSecrets, Arrays.asList(SCOPE))
.setAccessType("online")
.setApprovalPrompt("auto").build();

String url = flow.newAuthorizationUrl().setRedirectUri(GoogleOAuthConstants.OOB_REDIRECT_URI)
.build();
System.out.println("Please open the following URL in your browser then type"
               + " the authorization code:\n" + url);

// Read code entered by user.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String code = br.readLine();

// Generate Credential using retrieved code.
GoogleTokenResponse responseT = flow.newTokenRequest(code)
.setRedirectUri(GoogleOAuthConstants.OOB_REDIRECT_URI).execute();
GoogleCredential credential = new GoogleCredential()
.setFromTokenResponse(responseT);

// Create a new authorized Gmail API client
Gmail service = new Gmail.Builder(httpTransport, jsonFactory, credential)
.setApplicationName(APP_NAME).build();

ListMessagesResponse response = service.users().messages().list(USER).setQ("vagas").execute();

List<Message> messages = new ArrayList<Message>();
while (response.getMessages() != null) {
  messages.addAll(response.getMessages());
  if (response.getNextPageToken() != null) {
    String pageToken = response.getNextPageToken();
    response = service.users().messages().list(USER).setQ("vagas")
        .setPageToken(pageToken).execute();
  } else {
    break;
  }
}

for (Message message : messages) {
    //Essa é a parte onde pega o ID e Thread ID
    //qual(ais) parâmetro(s) devo adicionar para pegar o que preciso???
    System.out.println(message.toPrettyString());
}
}

}

谢谢大家!

【问题讨论】:

    标签: java email gmail-api


    【解决方案1】:

    给定电子邮件的 ID,您可以使用 Users.messages 资源的 get 方法获取内容。它在 JSON 响应中返回内容、发件人、主题和接收日期、收件人、发件人字段。

    当您获取消息时,您可以为响应指定有效负载格式。 FULL(默认)格式在有效负载字段中返回整个解析的消息。 MINIMAL 格式仅返回标识符和标签等元数据。 RAW 格式将数据作为原始属性中的 base64url 编码字符串返回。

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 2016-04-30
      • 1970-01-01
      • 2016-06-06
      • 2019-10-24
      • 1970-01-01
      • 2019-03-06
      • 2018-11-03
      • 2021-08-14
      相关资源
      最近更新 更多