我的代码应该在我的收件箱中收到一条消息,检查它是否有链接,然后从电子邮件中提取链接然后将其删除.
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) 我想通过Google API发送电子邮件,而不需要不必要的OAUTH2参数.我只有该用户的access_token和refresh_token.
如何使用Request npm插件通过NodeJS中的基本POST请求通过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 使用 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) 我们需要在我们的项目中从谷歌客户端库切换到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
我究竟做错了什么?:)
在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) 我已经使用 Gmail API 来阅读邮件并且工作正常。我成功地做到了这一点。但是,由于我希望该特定电子邮件为“标记为已读”(注意:“标记为已读”不适用于此处的标签),因此每当我通过 Gmail API 阅读该电子邮件时,我都无法这样做。实际上,我没有找到任何通过 Gmail API 执行此操作的方法。有什么办法吗?
PS:我在这个过程中使用 PHP。
我正在尝试使用 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) 我正在使用 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 格式传递“内容”。关于如何解决这个问题的任何建议?
有没有人有一个简单的例子,说明如何使用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) gmail-api ×10
gmail ×3
python ×3
google-api ×2
node.js ×2
ruby ×2
debugging ×1
google-oauth ×1
javascript ×1
php ×1
raspberry-pi ×1