我正在尝试使用Gmail API获取用户的电子邮件,抓取邮件主题和正文,然后将其显示在网页上.我会用它来做其他事情,但这是我遇到困难的部分.我正在使用Angular.js.
这是我的API调用:
function makeApiCall() {
gapi.client.load('gmail', 'v1', function() {
var request = gapi.client.gmail.users.messages.list({
labelIds: ['INBOX']
});
request.execute(function(resp) {
var content = document.getElementById("message-list");
angular.forEach(resp, function(message) {
var email = gapi.client.gmail.users.messages.get({'id': message.id});
// var raw = email.payload.parts;
// console.log(raw);
content.innerHTML += JSON.stringify(email) + "<br>";
})
});
});
}
Run Code Online (Sandbox Code Playgroud)
因此gapi.client.gmail.users.messages.list返回我的消息数组及其ID号.那很有效.
要求gapi.client.gmail.users.messages.get({<specific message ID>})输出这个 - {"B":{"method":"gmail.users.messages.get","rpcParams":{},"transport":{"name":"googleapis"}}}.
不确定是什么,但尝试获取消息payload(email.payload.parts),结果undefined.那么,我该如何获取消息内容?
此外,我会假设如果我可以获取消息内容,那么我将不得不对内容进行Base64解码以获得一些英语.对此有任何建议也会有很大帮助.我发现了这个:https://github.com/kvz/phpjs,但是因为我不知道如何获取消息内容以便我可以尝试解码它们,所以不确定是否有php.js在这方面是有帮助的.
如何使用带有PHP的Gmail API获取所有收件箱邮件?我可以获得消息ID,除此之外什么都没有.我需要获取主题,发件人和消息文本.
$list = $gmail->users_messages->listUsersMessages('me',['maxResults' => 10000, 'q' => 'category:primary']);
$messageList = $list->getMessages();
$client->setUseBatch(true);
$batch = new Google_Http_Batch($client);
foreach($messageList as $mlist){
$batch->add($gmail->users_messages->get('me',$mlist->id, ['format' => 'raw']),$mlist->id);
}
$batchMessages = $batch->execute();
$inboxMessage = [];
foreach($batchMessages as $dMessage){
$messageId = $dMessage->id;
$messageSnippet = $dMessage->snippet;
$dcMessage = base64url_decode($dMessage->getRaw());
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$mimeDecode = new Mail_mimeDecode($dcMessage);
$mimeSubject = $mimeDecode->decode($params)->headers['subject'];
$inboxMessage[] = [
'messageId' => $messageId,
'messageSubject' => $messageSubject
];
}
Run Code Online (Sandbox Code Playgroud) 我尝试使用- 尝试的谷歌REST API - Users.messages:发送.
有一个必要的参数 - raw-
整个电子邮件消息采用RFC 2822格式化和base64url编码的字符串.当提供format = RAW参数时,在messages.get和drafts.get响应中返回.
我检查了RFC 2822格式,似乎它应该在这里显示为示例,然后我用这个编码器将它编码为base64URL并将其粘贴raw到try的字段中,我得到 - Invalid value for ByteString: http://ostermiller.org/calc/encode.html.
你能给我一个正确的RFC 2822 format和它相应的base64URL,它会在上面试试吗?
我试图在我的两个gmail帐户上执行gmail api的监视,并且工作正常。
但是当其他用户尝试这样做时,它显示此错误:
HTTP错误400:“每个开发人员仅允许一个用户推送通知客户端(调用/ stop然后重试)>”
我不知道问题出在发布/订阅客户端配置上还是停下来观察可以解决问题?
有人可以解释“每个开发人员只允许一个用户推送通知客户端”这一说法的意思吗?
编辑:错误发生在这段代码上:
var gmail = google.gmail('v1');
gmail.users.labels.list({
auth: auth,
userId: 'me',
}, function(err, response) {
if (err) {
console.log('The API returned an error: ' + err);
return;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用带有Node js的gmail api.当我通过他们的快速入门指南时,我不断收到此错误.
https://developers.google.com/gmail/api/quickstart/nodejs
The API returned an error: Error: unauthorized_client
Run Code Online (Sandbox Code Playgroud)
请记住,我通过电子邮件地址快速入门,一切都很好.完全没有错误.我决定创建一个虚拟电子邮件用于测试目的.我做的唯一更改是step 1-g切换client_secret.json文件以保存新凭据和密钥.我尝试切换回旧文件,但错误仍然存在.
在提供的链接页面的底部说明.
Authorization information is stored on the file system, so subsequent executions will not prompt for authorization. Would I have to clear or refresh the information? If so how can I do this?
Run Code Online (Sandbox Code Playgroud)
如果有帮助,我将重新发布我的quickstart.js文件中的所有代码.
var fs …Run Code Online (Sandbox Code Playgroud) 使用Google Apps脚本(http://script.google.com),我从文档中了解如何发送,转发,转移到垃圾邮件等,但我找不到如何删除电子邮件的文件附件,即:
如果通过API无法实现,是否有办法将消息重新发送给自己,同时保留1,2和3?
注意:GmailAttachment该类看起来很有趣,并允许列出收件人:
var threads = GmailApp.getInboxThreads(0, 10);
var msgs = GmailApp.getMessagesForThreads(threads);
for (var i = 0 ; i < msgs.length; i++) {
for (var j = 0; j < msgs[i].length; j++) {
var attachments = msgs[i][j].getAttachments();
for (var k = 0; k < attachments.length; k++) {
Logger.log('Message "%s" contains the attachment "%s" (%s bytes)',
msgs[i][j].getSubject(), attachments[k].getName(), attachments[k].getSize());
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我找不到如何删除附件.
注意:我已经研究过许多其他解决方案,我已经阅读了几乎所有关于此的文章(具有专用Web服务的解决方案,本地客户端如Thunderbird + Attachment提取器插件等),但它们都不是真的很酷.这就是为什么我正在寻找通过Google Apps脚本手动执行此操作的解决方案.
如何使用 Gmail REST 或 Apps API 为邮件添加自定义星标?是否有可用于 Gmail REST API 的备用标签名称?甚至可以从 Google Apps Script API 实现吗?
上下文
Gmail 用户可以更改他们的设置以自定义他们想要使用的星标。这些过去被称为“超级明星”,以引入它们的实验室功能命名。它在工作时继续出现,例如资产 URL:...superstars/star_lit_green_check3.png。

Gmail REST API
Gmail REST API 不提供设置自定义星标的端点。您可以通过使用User.messages.modify端点添加或删除STARRED标签来加星标或取消星标。似乎没有任何文件表明还有哪些其他标签可用于全套星星。

由于文档没有提供如何设置自定义星标的线索,因此使用 Gmail 检查网络请求为我们提供了线索。

“sslbl”遵循前缀所在的模式^ss_,类型s用于星形或c自定义类型,以及颜色的第一个字母。通过它们都给我们列出了:
星级:^ss_sy, ^ss_so, ^ss_sr, ^ss_sp, ^ss_sb, ^ss_sg
定制:^ss_cr, ^ss_co, ^ss_cy, ^ss_cg, ^ss_cb, ^ss_cp
稍后进行一些研究,您最终会得到:
不幸的是,REST API 无法识别这些内部标签。测试另一个内部 -^前缀标签也失败,表明您不能在这里使用这些。请注意CATEGORY_FORUMS上面屏幕截图中的标签是如何应用于消息的。相应的^smartlabel_group标签失败。

~~
编辑:根据@TarunLalwani 的建议,我尝试User.messages.modify使用 URL …
通过 Gmail API 发送到 Gmail 地址的邮件在 Gmail 中被标记为“小心处理此邮件。它包含通常用于窃取个人信息的内容。”
该消息基本上只是说测试。并且通过 Gmail SMTP 发送的相同内容邮件不会被标记为该警告。
Gmail 将通过 Gmail 拥有的 API 传入的邮件标记为可疑邮件,这似乎真的很奇怪,但是当它们通过 SMTP 传来时,它不会发出警告。
我正在使用Gmail API在React中创建基于电子邮件的应用程序.我正在加载一堆消息,我想显示发件人的头像.
我正在使用这个包来显示头像.我想拥有Google ID或图片网址.能够获得其他流行服务的图像也很好,例如Outlook和Yahoo邮件.
其他人也提出了同样的问题,但所有答案似乎都使用了Picasa API(已弃用)或Google+ API(将弃用).
编辑:是的,该react-avatar软件包声称它可以根据提供的用户数据找到一个头像,但它与电子邮件的所有功能都是找到一个很多人没有的Gravatar.
我想在没有手动浏览器身份验证的情况下登录我的流星服务器程序。所以认证必须全部自动化;我根本不想要用户干预/互动。我在这里遇到了答案,但它是在 Java 中的,我不知道它是否有效。有人可以在meteor.js 中提供答案。如果答案在 node.js 中并且可以在流星中工作,那也很好。
最好我想在后端运行这个流星代码,作为使用 msavin /SteveJobs pacjage 的工作的一部分。