在Gmail REST API中,有两种方法可以做同样的事情:
messages.insert和messages.import
这两种方法有什么区别,在什么情况下我应该使用另一种方法?
我正在尝试使用带有javascript的GMAIL API来检索用户收件箱中的未读邮件.最多5个.
我试图$.get在用户使用G + api登录后使用jQuery ,但我在控制台中收到404错误.
这是我正在运行的:$.get('https://www.googleapis.com/gmail/v1/users/me/', function(data){ console.log(data); });我没有尝试将消息限制为未读或最多5个,因为现在,我目前甚至无法检索任何消息.
如何在用户的收件箱中获取最多5条未读邮件,甚至在当前登录用户的收件箱中获取邮件?
我想弄清楚如何从API获取JSON.我可以自己解析它,但是要求发送什么(如何获取用户的id和线程ID)然后获取JSON. 请帮我弄清楚如何在浏览器或控制台中查看JSON,从那里我很好.
我正在使用我的应用程序的Javascript客户端API,我试图从主要收件箱中获取未读邮件.
如果我在请求标签时使用INBOX和UNREAD名称,我会从所有标签中获取所有未读邮件.
没有其他标签类型名称可行,我已经在API资源管理器中进行了实验,我似乎无法弄清楚如何管理它.
我错过了什么或不可能吗?
我正在使用Gmail REST API创建标签(使用我自己的代码,而不是库).我有一个顶级标签工作正常,但现在我想为顶部标签创建一个子标签.我注意到当我使用Gmail创建子标签时,然后查看我通过REST API收到的列表,使用'/'字符作为分隔符显示子标签,例如"Top Label/Sub Label".但是,当我尝试创建这样的标签时,我只是得到一个标签,其名称中包含斜杠,而不是实际的子标签.我怎样才能做到这一点?
这就是我们使用的. https://developers.google.com/gmail/api/v1/reference/users/messages/list
为了获得一个红星的电子邮件,这就是我们要求的.
获取https://www.googleapis.com/gmail/v1/users/me/messages?q=has%3Ared-star&key= {YOUR_API_KEY}
结果是0.其他标准如:starred,has:附件按预期工作,我们做错了吗?
为Gmail构建Chrome扩展程序,尝试仅检索发送给我的电子邮件.我使用本页底部的gapi线程API资源管理器进行测试.它会按预期返回仅限收件箱的项目,如下图所示.我将
https://www.googleapis.com/gmail/v1/users/me/threads?=to%3Adan%40pledgmail.com+in%3Ainbox&access_token= + thisToken
上面的API Explorer中的请求URL复制并粘贴到我下面的background.js代码中,但除了我收到的那些之外,我还收到了我发送的电子邮件.
注意:我确实将请求URL中的"密钥"从API资源管理器更改为"access_token",否则我无法生成任何请求.
(如果我的代码没有放弃,我是新手.真诚地感谢任何帮助,我很感激你的时间.)
Google API Explorer结果(预期)

我的代码来自background.js,带有复制的请求URL
chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
if (changeInfo.status == 'complete') {
chrome.identity.getAuthToken({ 'interactive': true }, function(token) {
thisToken = token
chrome.runtime.onMessage.addListener(
function(request,sender,sendResponse){
var gapiRequestAllThreadsToSelf = "https://www.googleapis.com/gmail/v1/users/me/threads?=to%3Adan%40pledgmail.com+in%3Ainbox&access_token=" + thisToken
var getAllThreadsToSelf = function (gapiRequestURL)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", gapiRequestURL, false );
xmlHttp.send( null );
return xmlHttp.responseText;
}
var threadsToSelf = getAllThreadsToSelf(gapiRequestAllThreadsToSelf)
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {data: threadsToSelf}, function(response) { …Run Code Online (Sandbox Code Playgroud) 我在Google Apps脚本中使用Gmail API(基本上是Javascript),我需要尽可能少地调用API,以提高效率和速度.
我正在使用Users.messages:list列出用户邮箱中的消息,响应中包含一个名为的数组messages,对于每条消息,它包含一个id和一个threadId,如下所示:
"messages": [
{
"id": "152b93b1111c33e2",
"threadId": "152b922266c33e2"
},
{
"id": "152b93338c98cb3",
"threadId": "152b922266c33e2"
} ...
Run Code Online (Sandbox Code Playgroud)
但我需要响应以包含有关每条消息的更多信息,这样我就不必单独创建Users.messages:获取每条消息的调用.
Users.messages:list页面上的API Explorer 表示您可以使用fields参数" 指定要包含在部分响应中的字段 ".
当我单击" 使用字段编辑器 "选择我需要的三个项目时,它会将以下内容填入该字段:
messages(id,internalDate,payload)
Run Code Online (Sandbox Code Playgroud)
然后当我执行命令时,它显示GET命令应该如下所示:
https://www.googleapis.com/gmail/v1/users/test@test.com/messages?fields=messages(id%2CinternalDate%2Cpayload)&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)
但是,messages结果中的数组不包括internalDate或payload字段.它只包含消息id,如下所示:
"messages": [
{
"id": "152b93b1111c33e2"
},
{
"id": "152b93338c98cb3"
} ...
Run Code Online (Sandbox Code Playgroud)
它也不包括threadId了,但它继续包含threadId如果我选择它作为其中一个字段,如下所示:
messages(id,threadId)
Run Code Online (Sandbox Code Playgroud)
并且URL看起来像这样......
https://www.googleapis.com/gmail/v1/users/test@test.com/messages?fields=messages(id%2CthreadId)&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)
结果看起来与上面的第一个结果完全一样,我们没有使用fields参数.
所以我知道的fields参数是真的在做事情.
考虑到这可能只是API Explorer的限制,我尝试在Google Apps脚本中进行API调用,但它仍然不包括我需要的字段.
我能够成功发送没有附件的电子邮件.但是,当我尝试使用GTLUploadParamaters上传附件时,我收到501错误.
我尝试从照片库添加附件的NSData,以及只发送图像的URL.
在这两种情况下我都得到了同样的错误.
// Create the message
GTLGmailMessage *message = [[GTLGmailMessage alloc]init];
message.raw = [self getFormattedRawMessageForMail:mail];
if(!self.gmailService) {
self.gmailService = [Utilities initializeGmailService];
}
// Get the data of the image present in the photo library
GTLUploadParameters *image = [GTLUploadParameters uploadParametersWithData:[Singleton sharedInstance].dataImage MIMEType:@"image/jpeg"];
GTLQueryGmail *query = [GTLQueryGmail queryForUsersMessagesSendWithUploadParameters:image];
query.userId = [ORBSingleton sharedInstance].userProfile.email;
query.message = message;
[self.gmailService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLGmailMessage *mail, NSError *error) {
if(!error){
handler(YES, error);
}
else{
handler(NO, error);
}
}];
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?任何帮助将不胜感激.
我正在使用"WATCH"requset将我的电子邮件连接到pub/sub API.但是当我要使用下面的代码(由谷歌提供)停止通知时,它不起作用.我正在使用python客户端.
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
result = service.users().stop(userId='me')
Run Code Online (Sandbox Code Playgroud)
我的推荐:
我是第一次使用谷歌api,并且是一般的编码新手,并且有一个问题,我肯定很简单,但我找不到答案.当我运行以下代码 -
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
results = service.users().labels().list(userId='me').execute()
labels = results.get('labels', [])
if not labels:
print('No labels found.')
else:
print('Labels:')
for label in labels:
print(label['name'])
message_body = "This is the message"
message = {'message': message_body}
draft = service.users().drafts().create(userId='me', body=message).execute()
Run Code Online (Sandbox Code Playgroud)
我已成功列出我的Gmail帐户中的标签,但创建草稿的请求会返回错误消息"请求的身份验证请求不足".我发现创建草稿需要以下范围之一:
但对于我的生活,我无法弄清楚究竟是什么意思或如何实现这一目标,尽管我已尽力在某处找到它.
gmail-api ×10
gmail ×4
api ×2
google-api ×2
gapi ×1
google-inbox ×1
ios ×1
iphone ×1
javascript ×1
jquery ×1
objective-c ×1
python ×1
python-2.7 ×1