标签: gmail-api

没有足够的权限通过Gmail API删除邮件

我的代码应该在我的收件箱中收到一条消息,检查它是否有链接,然后从电子邮件中提取链接然后将其删除.

message = gmail_service.users().messages().get(userId='me', id=thread['id'], format='raw').execute()    #get message using thread id
msg_str = base64.urlsafe_b64decode(message['raw'].encode('ASCII'))
msg = email.message_from_string(msg_str)
for part in msg.walk():
    msg.get_payload()
    if part.get_content_type() == 'text/html':
        mytext = base64.urlsafe_b64decode(part.get_payload().encode('UTF-8'))
        html = BeautifulSoup(mytext)
        for link in html.find_all('a'):
            mylink = link.get('href')
            print mylink
            try:
                service.users().messages().trash(userId='me', id=thread['id']).execute()
                print 'Message with id: %s trashed successfully.' % msg_id
            except errors.HttpError, error:
                print 'Could not trash ' + thread['id'] + ': %s' % error
Run Code Online (Sandbox Code Playgroud)

我在代码中定义的范围是.modify应该给我,我需要垃圾邮件的权限,没有失败.为什么我收到错误:

<HttpError 403 when requesting https://www.googleapis.com/gmail/v1/users/me/messages/147d8c9a6348e437/trash?alt=json returned "Insufficient …
Run Code Online (Sandbox Code Playgroud)

python debugging google-oauth gmail-api

4
推荐指数
1
解决办法
2265
查看次数

使用Google API仅使用访问令牌发送电子邮件

我想通过Google API发送电子邮件,而不需要不必要的OAUTH2参数.我只有该用户的access_token和refresh_token.

如何使用Request npm插件通过NodeJS中的基本POST请求通过Gmail API发送电子邮件?

google-api node.js google-api-nodejs-client gmail-api

4
推荐指数
1
解决办法
3499
查看次数

Gmail API返回不存在的线程

我使用gmail API列出线程,我发现users_threads->list无法找到一些返回的项目users_threads->get.这些项目也无法通过gmail的Web UI看到.

我正在使用gmail的api explorer(https://developers.google.com/gmail/api/v1/reference/users/threads/list)来测试列表线程.

对于auth'd帐户,我的收件箱为空.

该网站发出请求GET https://www.googleapis.com/gmail/v1/users/me/threads?labelIds=INBOX&key={YOUR_API_KEY}并返回此结果集:

200 OK

cache-control:  no-cache, no-store, max-age=0, must-revalidate
content-encoding:  gzip
content-length:  287
content-type:  application/json; charset=UTF-8
date:  Wed, 08 Jul 2015 18:23:25 GMT
etag:  "A_TI-e9NgLq0wln5q88xm3zdvSg/6meEdFVG8voZD7dqGr76UTURSRk"
expires:  Fri, 01 Jan 1990 00:00:00 GMT
pragma:  no-cache
server:  GSE
vary:  Origin, X-Origin
{
 "threads": [
  {
   "id": "14a78517c954ec9c",
   "snippet": "",
   "historyId": "806722"
  },
  {
   "id": "149daea953d5674e",
   "snippet": "",
   "historyId": "688170"
  },
  {
   "id": "149d462f26b543db",
   "snippet": "",
   "historyId": "686319"
  }, …
Run Code Online (Sandbox Code Playgroud)

gmail-api

4
推荐指数
1
解决办法
530
查看次数

如何通过 GMAIL API 发送带有 BCC 标头的电子邮件?

如何通过 GMAIL API 使用 BCC 发送电子邮件?我向 TO 或 CC 发送电子邮件,但 BCC 不起作用。我使用Base64.urlsafe_encode64(email.to_s)此代码创建没有 BCC 的字符串。我的工作代码示例:

    email = Mail.new
    email.date = Time.now
    email.subject = subject
    email.to = email_array_to_email_to(to)
    email.cc = email_array_to_email_to(cc)
    email.bcc = email_array_to_email_to(bcc)
    email.reply_to = email_array_to_email_to(reply_to)
    email.html_part do
      body message
    end
    request = {
        api_method: @google_api.users.messages.to_h['gmail.users.messages.send'],
        parameters: { userId: 'me' },
        body_object: {
            raw: Base64.urlsafe_encode64(email.to_s)
        },
    }
Run Code Online (Sandbox Code Playgroud)

我是否必须再次调用 GMAIL API 并使用线程 ID 和密件抄送作为 TO 发送此电子邮件?我使用google-api-client 0.7.1

编辑:邮件对象:

#<Mail::Message:70336725981360,
Multipart: true,
Headers: <Date: Tue,
01 Dec 2015 14:09:08 +0100>, …
Run Code Online (Sandbox Code Playgroud)

ruby gmail ruby-on-rails google-api-client gmail-api

4
推荐指数
1
解决办法
1800
查看次数

获取邮件的Gmail REST api批量支持

我们需要在我们的项目中从谷歌客户端库切换到Gmail REST API,我遇到了batch()的问题,因为它在REST API中不可用 - 你只能得到消息ID列表然后获取每条消息一个接一个地使用它的id.如果我们使用那个gmail库,一切似乎都很清楚.我们创建一个批处理对象,然后在其中对每个GET请求进行排队.我们不必关心它是如何在里面实现的.目前我正在尝试做一些POC,我正在测试这些建议https://developers.google.com/gmail/api/guides/batch 与Postman但没有运气..

我收到了400个不好的请求.如何在Postman(或其他应用程序)中使用正确的请求主体?下一步将使用Java实现多部分请求并使用RestTemplate发送POST,但我需要首先在Postman中提供一些POC.

我在这个屏幕截图中设置它 - > Postman

我究竟做错了什么?:)

gmail gmail-api

4
推荐指数
3
解决办法
1193
查看次数

如何在我解析时使用gmail api将邮件标记为已读?

在python中如何将消息标记为"读取",因为我从gmail api解析它?另外,如何在解析后将值保存到数据库?这是到目前为止获取每条消息内容的代码.

from __future__ import print_function
import httplib2
import os
import re
import MySQLdb
from email.utils import parsedate_tz,mktime_tz,formatdate
from requests.adapters import HTTPAdapter
import datetime
from datetime import date,timedelta
import time
from apiclient import discovery
import oauth2client
from oauth2client import client
from oauth2client import tools
import json
try:
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None
SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'
CLIENT_SECRET_FILE = 'client_server.json'
APPLICATION_NAME = 'Gmail API Python Quickstart'
def get_credentials():

    home_dir = os.path.expanduser('~')
    credential_dir = os.path.join(home_dir, '.credentials')
    if not …
Run Code Online (Sandbox Code Playgroud)

python gmail-api

4
推荐指数
2
解决办法
2102
查看次数

如何使用 Gmail API 在 Gmail 中“标记为已读”电子邮件?

我已经使用 Gmail API 来阅读邮件并且工作正常。我成功地做到了这一点。但是,由于我希望该特定电子邮件为“标记为已读”(注意:“标记为已读”不适用于此处的标签),因此每当我通过 Gmail API 阅读该电子邮件时,我都无法这样做。实际上,我没有找到任何通过 Gmail API 执行此操作的方法。有什么办法吗?

PS:我在这个过程中使用 PHP。

php gmail-api

4
推荐指数
1
解决办法
1866
查看次数

使用python发送消息时出现400错误

我正在尝试使用 Gmail API 发送电子邮件。我已成功通过身份验证并在我的机器上有一个 client_secret.json 文件。我已经能够使用 Gmail API 网站上的快速入门示例获取标签列表

我已成功将范围重置为

SCOPES = 'https://mail.google.com'
Run Code Online (Sandbox Code Playgroud)

允许完全访问我的 Gmail 帐户。

我有一个 python 脚本,从这里这里编译。见下文。执行脚本时,我收到以下错误消息:

发生错误:https://www.googleapis.com/gmail/v1/users/me/messages/send?alt=json 返回“'raw' RFC822 有效负载消息字符串或通过 /upload/* URL 需要上传消息”>

关于我做错了什么以及如何解决它的任何想法?

from __future__ import print_function
import argparse
import time
from time import strftime, localtime
import os

import base64
import os
import httplib2
from httplib2 import Http

from apiclient import errors
from apiclient import discovery

import oauth2client
from oauth2client import file, client, tools

SCOPES = 'https://mail.google.com'
CLIENT_SECRET_FILE = 'client_secret.json'
store = …
Run Code Online (Sandbox Code Playgroud)

python raspberry-pi gmail-api

4
推荐指数
1
解决办法
806
查看次数

gmail api 使用 html 中的内容发送电子邮件

我正在使用 gmail api 发送电子邮件。以下是我的代码

function sendEmail(auth, from, to, subject, content) {

 var encodedEmail = new Buffer(
   'From: ' + from + '\r\n' +
   'To: ' + to + '\r\n' +
   'Subject: ' + subject + '\r\n\r\n' +

   content 
 ).toString('base64').replace(/\+/g, '-').replace(/\//g, '_');

 var gmail = google.gmail('v1');
 var request = gmail.users.messages.send({
   auth: auth,
   userId: 'me',
   resource: {
     raw: encodedEmail
   }
 });
};
Run Code Online (Sandbox Code Playgroud)

但这种情况下的内容应该是纯文本/文本。问题是我想以 HTML 格式传递“内容”。关于如何解决这个问题的任何建议?

javascript node.js gmail-api

4
推荐指数
1
解决办法
2303
查看次数

使用ruby gmail api v0.9发送电子邮件

有没有人有一个简单的例子,说明如何使用v0.9 API从头开始发送电子邮件.

只想要一个发送以下内容的例子:

m = Mail.new(
to: "test1@test.com", 
from: "test2@test.com", 
subject: "Test Subject",
body:"Test Body")
Run Code Online (Sandbox Code Playgroud)

现在要创建需要发送的消息对象,我们可以使用:

msg = Base64.urlsafe_encode64 m.to_s
Run Code Online (Sandbox Code Playgroud)

然后尝试发送(其中message_object = msg):

client = Google::Apis::GmailV1::GmailService.new #Appropriately authorised
client.send_user_message("me", message_object)
Run Code Online (Sandbox Code Playgroud)

客户端需要RFC822兼容的编码字符串,以上应该是.

我试过了:

message_object = msg
=> Google::Apis::ClientError: invalidArgument: 'raw' RFC822 payload message string or uploading message via /upload/* URL required
message_object = raw:msg
=>ArgumentError: unknown keyword: raw
message_object = {raw:msg}
=>ArgumentError: unknown keyword: raw 
message_object = Google::Apis::GmailV1::Message.new(raw:msg)
=> #<Google::Apis::GmailV1::Message:0x007f9158e5b4b0 @id="15800cd7178d69a4", @thread_id="15800cd7178d69a4">
#But then I get Bounce <nobody@gmail.com> - An error …
Run Code Online (Sandbox Code Playgroud)

ruby gmail google-api google-api-ruby-client gmail-api

4
推荐指数
1
解决办法
886
查看次数