在Java世界中
想知道是否有人有关于通过 gmail api 发送电子邮件与通过 java 邮件服务配置 gmail smtp 服务配置的比较的信息。
两者的优点/缺点
批量电子邮件 一个连接可以触发 5 封单独的电子邮件吗?
通过邮递员点击 Gmail API 获取消息时出现禁止 403 错误,请帮助我解决此问题。错误
https://www.googleapis.com/gmail/v1/users/userId/messages 此网址用于获取邮件列表
https://www.googleapis.com/gmail/v1/users/userId/messages/id 这是为了获取特定 ID 的消息
我可以点击获取消息列表 API,但获取消息 API 对我不起作用
我通过邮递员做所有这些事情
错误信息 :
{
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "Metadata scope doesn't allow format FULL"
}
],
"code": 403,
"message": "Metadata scope doesn't allow format FULL"
}
Run Code Online (Sandbox Code Playgroud)
}
我正在尝试使用Google API Python 客户端和服务帐户身份验证来访问我们的 GSuite GMail API。根据文档,我的 MCVE 代码如下:
import os
import sys
from google.auth.transport.requests import Request
from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
email = sys.argv[1]
cred = Credentials.from_service_account_file(os.getenv('SERVICE_ACCOUNT'))
cred = cred.with_scopes(['https://www.googleapis.com/auth/gmail.labels'])
cred.refresh(Request())
gmail = build('gmail', 'v1', credentials=cred)
try:
print(gmail.users().labels().list(userId=email).execute())
except Exception as ex:
print('Error:', ex.content.decode('ascii'))
Run Code Online (Sandbox Code Playgroud)
输出是:
Error: {
"error": {
"errors": [
{
"domain": "global",
"reason": "failedPrecondition",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}
Run Code Online (Sandbox Code Playgroud)
普通嫌疑犯:
该代码在 Pycharm 中完美运行,或者在运行 .py 文件时完美运行,但我需要该应用程序成为 .exe 文件才能在没有 python 的设备上运行。
我试图允许用户从 tkinter 窗口报告应用程序中的错误/提供反馈。然后反馈会通过 gmail-api 发送给我。
.exe 文件是由 pyinstaller 生成的(从虚拟环境内部运行)运行 exe 文件时,一切正常,直到:
service = build(serviceName='gmail',
version='v1',
credentials=creds,
discoveryServiceUrl="https://gmail.googleapis.com/$discovery/rest?version=v1")
Run Code Online (Sandbox Code Playgroud)
哪里生产
File "googleapiclient\_helpers.py", line 134, in positional_wrapper
File "googleapiclient\discovery.py", line 273, in build
File "googleapiclient\discovery.py", line 387, in _retrieve_discovery_doc
googleapiclient.errors.UnknownApiNameOrVersion: name: gmail version: v1
Run Code Online (Sandbox Code Playgroud)
单击 tkinter 按钮时执行以下代码。
gmail 代码几乎完全从 google gmail api 示例复制而来。
小代码片段:
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
SCOPES = ['https://www.googleapis.com/auth/gmail.send']
def …Run Code Online (Sandbox Code Playgroud) 我正在按照go faststart gmail api中的步骤操作。
在函数上getTokenFromWeb,粘贴长网址
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=abcdefg.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly&state=state-token
或者
http://localhost:8000
结果是
无法访问该网站。本地主机拒绝连接。ERR_CONNECTION_REFUSED
遵循相同的快速入门,但对于 python 来说可以完美地工作。
如果我通过 python 获取令牌并在 Go 快速入门中使用它,它也可以工作。所以问题就出在网络检索的令牌上。
你好,我正在尝试将 Google Sign In 集成到我的 python 脚本中,并且运行此错误:
\n访问被阻止:此应用程序\xe2\x80\x99s请求无效
\n您无法\xe2\x80\x99 登录,因为此应用发送了无效请求。您可以稍后再试,或者联系开发人员解决此问题。了解有关此错误的更多信息
\n如果您是此应用程序的开发人员,请参阅错误详细信息。
\n错误 400:redirect_uri_mismatch
\n我尝试运行的 python 脚本是来自 Google 来源的基本脚本:
\n# import the required libraries\nfrom googleapiclient.discovery import build\nfrom google_auth_oauthlib.flow import InstalledAppFlow\nfrom google.auth.transport.requests import Request\nimport pickle\nimport os.path\nimport base64\nimport email\nfrom bs4 import BeautifulSoup\n\n# Define the SCOPES. If modifying it, delete the token.pickle file.\nSCOPES = ['https://www.googleapis.com/auth/gmail.readonly']\n\ndef getEmails():\n # Variable creds will store the user access token.\n # If no valid token found, we will create one.\n …Run Code Online (Sandbox Code Playgroud) python oauth-2.0 google-api-python-client gmail-api google-developers-console
我正在尝试通过Gmail PHP API发送电子邮件(https://developers.google.com/gmail/api/v1/reference/users/messages/send).一切似乎都达到了我发送信息的程度.我的代码是:
private function createMessage($email) {
$message = new Google_Service_Gmail_Message();
$message->setRaw(strtr(base64_encode($email), '+/=', '-_,')); // $email is a raw email data string
return $message;
}
public function sendMessage($userID, $email) {
try {
$msg = $this->createMessage($email);
$this->service->users_messages->send($userID, $msg);
} catch (Exception $e) {
print 'An error occurred: ' . $e->getMessage();
}
}
Run Code Online (Sandbox Code Playgroud)
代码在破线:
$this->service->users_messages->send($userID, $msg);
有错误:
An error occurred: Error calling POST https://www.googleapis.com/gmail/v1/users/myemailaddress@gmail.com/messages/send: (400) Invalid value for ByteString:
Run Code Online (Sandbox Code Playgroud)
知道这里发生了什么吗?谢谢!
我正在尝试使用gmail-api发送电子邮件,我正在读取用户的数据并将其转换为base64url字符串
我正在获取原始值,当我尝试使用post请求发送邮件时
var ss=new Buffer(message).toString('base64')
var rawdata = ss.replace(/\//g, '_').replace(/\+/g, '-');
var options={"access_token":google.accessToken,'raw':rawdata};
var res=HTTP.post('https://www.googleapis.com/gmail/v1/users/me/messages/send',{params: options});
Run Code Online (Sandbox Code Playgroud)
这是投掷错误
{ "error": { "errors": [
{ "domain": "global",
"reason": "parseError",
"message": "This API does not support parsing form-encoded input." } ],
"code": 400, "message": "This API does not support parsing form-encoded input." } }
Run Code Online (Sandbox Code Playgroud)
我发送以下参数
var message = 'From: Me <ff@gmail.com>\r\n' +
'To: Me <ss@gmail.com>\r\n' +
'Subject: Hello\r\n'+
'Mime-Version: 1.0\r\n'+
'Content-Type: text/html; charset=utf-8\r\n' +
'Content-Transfer-Encoding: quoted-printable\r\n\r\n' +
'<html><body>' +
'<h1>World</h1>' + …Run Code Online (Sandbox Code Playgroud) GmailApp在Google Apps脚本中使用时,我注意到以下限制:
var threads = GmailApp.search("to:test@example.com");
Logger.log(threads.length); // 250 max
var threads = GmailApp.search("label:mylabel");
Logger.log(threads.length); // 500 max
var label = GmailApp.getUserLabelByName('mylabel');
var threads2 = label.getThreads();
Logger.log(threads2.length); // 500 max
Run Code Online (Sandbox Code Playgroud)
您如何在500或250多个线程上进行工作(例如提取电子邮件地址并将其添加到列表中)?
您会通过按日期拆分来手动执行此操作吗(不是很漂亮,但可能还在工作)?
我尝试使用此处的指南获取通知. https://developers.google.com/gmail/api/guides/push#gmail_watch
Gmail服务(服务)可以获取标签,收件箱和其他API功能.
这是代码.
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
IList<string> label = new List<string>();
label.Add("INBOX");
WatchRequest request2 = new WatchRequest
{
LabelIds = label,
LabelFilterAction = "include",
TopicName = "projects/******/topics/****TestTopic"
};
var x= service.Users.Watch(request2, "me").Execute();
Run Code Online (Sandbox Code Playgroud)
Watch抛出这个例外
Google.Apis.Requests.RequestError
Backend Error [500]
Errors [
Message[Backend Error] Location[ - ] Reason[backendError] Domain[global]
]
Run Code Online (Sandbox Code Playgroud) gmail-api ×10
google-api ×4
gmail ×3
python ×3
.net ×1
go ×1
google-oauth ×1
javascript ×1
node.js ×1
oauth-2.0 ×1
php ×1
post ×1