我在 Laravel 项目中使用 Google Oauth2 和 Gmail API。Gmail API的使用是仅访问用户已收到的附件并下载附件。验证已经完成,但在最后一步,我收到了这封电子邮件,但我不知道该怎么做,任何帮助将不胜感激。
我需要在INBOX中获取最后100条消息(仅限标题).为此我正在使用IMAP扩展来搜索然后获取消息.这是通过两个请求(SEARCH然后UID FETCH)完成的.
什么是Gmail API相当于在一个请求中获取多条消息?
我所能找到的只是一个批处理API,这看起来更麻烦(组成一个messages:get包含在普通HTTP代码中的一长串请求).
我面临着API的几个问题,
第一:
发送方法询问'id'(消息ID或线程ID)..但为什么?我正在发送新消息,所以它不应该要求.根据Gmail Api documnetation它的可选. https://developers.google.com/gmail/api/v1/reference/users/messages/send
ArgumentError: Missing required parameters: id.
Run Code Online (Sandbox Code Playgroud)
第二:
即使在指定消息ID后,它也会返回此消息.
Your client has issued a malformed or illegal request.
Run Code Online (Sandbox Code Playgroud)
码
require 'mime'
include MIME
msg = Mail.new
msg.date = Time.now
msg.subject = 'This is important'
msg.headers.set('Priority', 'urgent')
msg.body = Text.new('hello, world!', 'plain', 'charset' => 'us-ascii')
msg.from = {'hi@gmail.com' => 'Boss Man'}
msg.to = {
'list@example.com' => nil,
'john@example.com' => 'John Doe',
'jane@example.com' => 'Jane Doe',
}
@email = @google_api_client.execute(
api_method: @gmail.users.messages.send(:get),
body_object: {
raw: Base64.urlsafe_encode64(msg.to_s)
},
parameters: …Run Code Online (Sandbox Code Playgroud) 我通过典型的方法在Gmail的网络界面中创建了一个标签"handler_gmail".
当我尝试通过Gmail API(Python客户端库)为邮件设置该标签时,我收到响应HttpError 400,返回"无效标签:handler_gmail".
我确定标签存在(我已多次检查 - 没有拼写错误).
我试图这样设置它:
gs.users().messages().modify(userId=username, id=m['id'], body={"addLabelIds": ['handler_gmail']}).execute()
我尝试"removeLabelIds": []在字典中添加一个键/值对(想想可能是必需的),但是得到了相同的"无效标签"错误.
非常感谢任何帮助!如此接近能够做我需要的这个项目!
我正在与gmail api交谈,并希望批量处理请求.他们有一个友好的指南,https://developers.google.com/gmail/api/guides/batch,这表明我应该能够使用multipart/mixed并包含不同的网址.
我正在使用Python和Requests库,但我不确定如何发布不同的URL.像这样的答案如何在python中发送带有请求的"multipart/form-data"?不要提及更改该部分的选项.
我该怎么做呢?
好像Gmail REST API中可能存在严重问题.
结果出人意料.Gmail REST API返回404 Not Found ..似乎返回的historyId未注册或有效.
在调用/ userId/profile时,startHistoryId有效,可以在/ userId/history/list调用中成功使用.
com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
{
"code" : 404,
"errors" : [ {
"domain" : "global",
"message" : "Not Found",
"reason" : "notFound"
} ],
"message" : "Not Found"
}
Run Code Online (Sandbox Code Playgroud) 情况
我正在为我的应用设置Gmail API.
我需要导入所有标有特定标签的电子邮件,例如TRASH,SPAM,SENT,UNREAD,STARRED等.
我可以获取收件箱电子邮件列表和单个邮件信息.我可以获得标签列表以及单个标签信息.但我没有找到如何将它们结合起来.
显然,在给定labelId的情况下,没有特定的请求来检索消息列表,并且在电子邮件列表中没有labelId的痕迹.
要求输出:
获取消息列表:
array(3) { [0]=> array(5) { ["messageId"]=> string(16) "14ddc24465a9b72e" ["messageSnippet"]=> string(14) "sample message" ["messageSubject"]=> string(4) "Test" ["messageDate"]=> string(22) "Jun 10th 2015 08:24 AM" ["messageSender"]=> string(44) "SENDER_NAME" } [1]=> array(5) { ["messageId"]=> string(16) "14dd8391372f3035" ["messageSnippet"]=> string(91) "buonasera Date: Tue, 9 Jun 2015 08:08:48 -0400 Message-Id: <CAGL50m_2vPv-Bkzbd+m5iFkx-u-" ["messageSubject"]=> string(4) "Test" ["messageDate"]=> string(22) "Jun 10th 2015 08:24 AM" ["messageSender"]=> string(44) "SENDER_NAME" } [2]=> array(5) { ["messageId"]=> string(16) "14dd7f4f126103c9" ["messageSnippet"]=> string(99) "Ciao meetinghand Suggerimenti per …Run Code Online (Sandbox Code Playgroud) 我想在云发布/子主题上创建监视但无法创建它.为此,我正在使用其余请求
request_Req.post({
url:'https://www.googleapis.com/gmail/v1/users/me/watch',
headers:{
'content-type': 'application/json',
'Authorization': 'Bearer '+ access_token,
},
scope : [
'https://mail.google.com/'
],
'body': JSON.stringify({
'topicName' : "/projects/ProjectId/topics/TopicId",
'labelIds' : ["INBOX"]
});
}),function(error, resp, body){
});
Run Code Online (Sandbox Code Playgroud)
但是我收到了错误消息 Error sending test message to Cloud
PubSub/projects/ProjectID/topics/TopicId : Resource not found resource=TopicId
我正在使用nodeJS的最新(0.9.8)google-api-nodejs-client库.我正在使用服务帐户和JWT作用域进行https:\\googleapis.com/auth/gmail.send身份验证(以及/ auth/drive FWIW).
我尝试发送电子邮件(base64urlencoded),如下所示:
req = mail.users.messages.send(
{
auth: jwtClient, // really works with google drive
userId: actual@gmail.com // actually a legit gmail address
resource: {
raw: message // base64encode(urlencode(RFC822 msg))
}
}, (err, res) => { console.log(err); }
);
Run Code Online (Sandbox Code Playgroud)
并且回调接收到这个非常有用的对象:
{"code": 400,"errors":[{"domain":"global","reason":"failedPrecondition","message":"Bad Request"}]}
Run Code Online (Sandbox Code Playgroud)
我知道google-api-nodejs-client是alpha并且GMail API本身正在发展(消息对资源等).因此,一些在线信息 - 包括谷歌自己的文档 - 是可以理解的不一致.我正在寻找任何建议,因为错误似乎非常通用.
我正在尝试为Android编写一个小小的gmail客户端作为培训.我从https://developers.google.com/gmail/api/quickstart/android中获取了gmail api指南示例,对其进行了一些修改,以获取带有标题和正文的消息.我将范围设置为GmailScopes.Gmail_modify并编辑了主要请求函数,如下所示:
private List<String> getDataFromApi() throws IOException {
// Get the labels in the user's account.
String user = "me";
List<String> labels = new ArrayList<String>();
ListLabelsResponse listResponse =
mService.users().labels().list(user).execute();
ListThreadsResponse listThreads = null;
try {
listThreads = mService.users().threads().list(user).execute();
} catch (IOException ioex){
Log.e(LOG_TAG, "First: " + ioex.toString());
}
for (Thread thread : listThreads.getThreads()) {
try {
thread = mService.users().threads().get(user, thread.getId()).setFormat("full").execute();
} catch (IOException ioex){
Log.e(LOG_TAG, "Second: " + ioex.toString());
}
for(Message message : thread.getMessages()){
labels.add(message.getId());
} …Run Code Online (Sandbox Code Playgroud)