【发布时间】:2020-08-28 02:34:24
【问题描述】:
我正在开发使用 GMAIL API 从新邮件中下载附件的应用。我已经使用 JavaMail 制作了应用程序,但必须避免使用 IMAP 协议。
我已使用 Oauth2 成功登录邮件帐户,但现在我需要获取新邮件和下载附件方面的帮助。 我看到了我们按 ID 搜索消息的示例代码,但在这种情况下它不可用。
编辑 1: 我拥有的代码与来自的代码相同,只是在类中分隔 Quickstart
编辑 2:
String user = "me";
ListMessagesResponse listMessageResponse = service.users().messages().list(user).setQ("is:unseen").execute();
List<Message> list = listMessageResponse.getMessages();
for(Message m : list) {
List<MessagePart> part = m.getPayload().getParts();
for(MessagePart p: part) {
if(p.getFilename()!=null && p.getFilename().length()>0) {
System.out.println(p.getFilename());
}
}
}
我收到此行的错误
ListMessagesResponse listMessageResponse = service.users().messages().list(user).setQ("is:unseen").execute();
Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Insufficient Permission",
"reason" : "insufficientPermissions"
} ],
"message" : "Insufficient Permission"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:150)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:451)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1089)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:549)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:482)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:599)
at Main.main(Main.java:64)
编辑 3:
使SCOPES 使用GMAIL_READONLY 替换GMAIL_LABELS,我想我成功获取了看不见的邮件,现在我可以下载附件了。
ListMessagesResponse listMessageResponse = service.users().messages().list(user).setQ("is:unseen").execute();
listMessageresponse 不是null,而list 等于null
List<Message> list = listMessageResponse.getMessages();
【问题讨论】:
-
请提供您目前拥有的代码。
-
您可以通过list 指定
q参数is:unread来获取新邮件。