现在,我可以使用 gmail api 获取所有未读电子邮件或收件箱中的所有电子邮件。
GMAIL.users().messages().list(userId='me', labelIds=['UNREAD', 'INBOX']).execute()
Run Code Online (Sandbox Code Playgroud)
因为收到所有电子邮件可能很烦人,所以我想知道是否可以只从 gmail api 获取最近的 10 封未读电子邮件?
感谢您的任何提示,让我可以做这样的事情。
我想使用 gmail api 发送包含所有 html 的电子邮件。这是 html 的预览:https : //docs.google.com/drawings/d/1J0nzeTol6VFr8sB1TlMDbTrSVanDncQ8FOelP_SvmY0/edit
但是当我将电子邮件发送到我的测试帐户然后我在收件箱中检查电子邮件时,电子邮件中的所有样式都丢失了。这是邮件发送后的截图。 https://docs.google.com/drawings/d/1yfzmlqzMhJMWbJth-o6mfgSJcGAtUIKr41hpvzlFQGE/edit?usp=sharing
我想获得电子邮件中的所有样式。我也尝试过字符集 iso-8859-1,但结果仍然相同。
这是我的 php 代码:
$service = new Google_Service_Gmail($this->client);
$user = 'me';
$strSubject = $subject;
$strRawMessage = "From: <".$from.">\r\n";
$strRawMessage .= "To: <".$to.">\r\n";
$strRawMessage .= 'Subject: =?utf-8?B?' . base64_encode($strSubject) . "?=\r\n";
$strRawMessage .= "MIME-Version: 1.0\r\n";
$strRawMessage .= "Content-Type: text/html; charset=utf-8\r\n";
$strRawMessage .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n";
$strRawMessage .= $message."\r\n";
// The message needs to be encoded in Base64URL
$mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '=');
$msg = new …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 gmail API 发送电子邮件。正如您在下面看到的,我的 Ruby 代码在没有附件的情况下运行良好:
client = google_client user_id
token = Token.find_by_user_id(user_id)
access_token = token.access_token
gmail = Google::Apis::GmailV1::GmailService.new
gmail.authorization = client
message = Mail.new
message.date = Time.now
message.subject = 'Supertram p'
message.body = "<p>Hi Alex, how's life?</p>"
message.content_type = 'text/html'
message.from = self.email
message.to = 'email_name@gmail.com'
msg = message.encoded
message_object = Google::Apis::GmailV1::Message.new(raw:message.to_s)
gmail.send_user_message('me', message_object)
Run Code Online (Sandbox Code Playgroud)
我能够以 html 格式成功发送电子邮件。我的问题是如何将文件附加到此消息?
client = google_client user_id
token = Token.find_by_user_id(user_id)
access_token = token.access_token
gmail = Google::Apis::GmailV1::GmailService.new
gmail.authorization = client
message = Mail.new
message.date = Time.now …Run Code Online (Sandbox Code Playgroud) 我是 Node.js 的新手,我正在尝试使用 Gmail API 创建一个邮箱,除了在电子邮件中上传附件外,一切正常。我找到了 Java、Python 和 C# 的示例,但我找不到任何关于它的节点文档。任何提示将不胜感激。
这是我的代码:
function makeBody(to, from, subject, message) {
var str = ["Content-Type: multipart/mixed; charset=\"UTF-8\"\n",
"MIME-Version: 1.0\n",
"Content-Transfer-Encoding: 7bit\n",
"to: ", to, "\n",
"from: ", from, "\n",
"subject: ", subject, "\n\n",
message,
file
].join('');
var encodedMail = new Buffer(str).toString("base64").replace(/\+/g, '-').replace(/\//g, '_');
return encodedMail;
}
function sendMessage(auth) {
var raw = makeBody(tap, 'me', response.subject, response.content, response.files);
gmail.users.messages.send({
auth: auth,
userId: 'me',
resource: {
raw: raw
}
}, function (err, response) {
if (err) …Run Code Online (Sandbox Code Playgroud) 我一直试图弄清楚如何以编程方式检查 gmail 帐户是否存在。几乎所有搜索都会导致验证服务,例如 xverify 或 EmailOversight,您可以在其中根据每个请求的成本验证任何电子邮件地址。
我感兴趣的是一种无需中间人就可以直接做到这一点的方法。换句话说,这些验证服务是如何做到的?似乎谷歌应该提供某种 API 供这些人 ping 以查看电子邮件地址是否有效。
请注意,我对检查电子邮件地址的语法不感兴趣。所以我不是在寻找某种正则表达式解决方案。
此外,我尝试连接到 gmail.com MX 记录域(例如 alt3.gmail-smtp-in.l.google.com)并尝试通过运行简单的 SMTP 命令来提取电子邮件地址的有效性。基本上本文建议的内容:https : //www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/
但我不能为任何类型的卷做到这一点。Gmail 将在一定数量的连接后开始阻止您的连接尝试。因此该方法不可扩展。这就是为什么我觉得有另一种方式。
*******添加*********
这就是为什么这个问题与如何以编程方式检查电子邮件是否存在不同的原因
那篇文章只提供了一种解决方案,我已经尝试过了——使用 SMTP 命令。谷歌不会允许以任何规模这样做。如果我只需要验证几封电子邮件,那将是一个明智的解决方案,但如果我有 10,000 封电子邮件,那就不是了。
使用 Gmail API,如何检索电子邮件的主题?
我在原始文件中看到它,但检索它很麻烦,我相信应该有一种方法可以直接通过 API 来完成它。
messageraw= service.users().messages().get(userId="me", id=emails["id"], format="raw", metadataHeaders=None).execute()
Run Code Online (Sandbox Code Playgroud)
这是因为这个同样的问题一个,但它已经接近甚至让我不能比发布提出了一个更好的答案。
我正在使用 Gmail API 下载电子邮件。当这些电子邮件是 HTML 时,我尝试使用 Python 的 pdfkit 将它们转换为 PDF。
这在许多情况下都有效,但在某些情况下,html 有效负载包含图像标签,如src=“cid:169abdc4ae2c4da871d2”.
这个“cid”标签似乎是指作为多部分电子邮件的一部分发送的图像,但这不能被 PDFkit 处理。错误是:
wkhtmltopdf reported an error:
Loading pages (1/6)
Error: Failed to load cid:169abf0d0cdfffb7aff2, with network status code 301 and http status code 0 - Protocol "cid" is unknown
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?有没有办法将我从 gmail 有效负载获得的 HTML 转换为具有适当图片源的标准 HTML?
我在2016 年发现了一个类似的问题,但是当时 Gmail 本身不支持预定发送电子邮件。
现在您可以安排消息稍后直接从 Gmail 发送,我想知道是否有办法使用他们的 API 来做到这一点。
有趣的是,预定的电子邮件在调用时显示为消息对象messages.list,但它们不包含任何标签。
任何帮助,将不胜感激!如果目前不可能,那么从 Google 的某个人那里得到关于何时可能实现的回复会很棒(我相信他们正式认可 StackOverflow 的 gmail-api 标签)
我们正在使用 Gmail .NET SDK 实现 Gmail 发送 ASP .NET Web 应用程序。
为此,我们需要用户授予我们以下所有范围“电子邮件”、“个人资料”、“openid”、 https://www.googleapis.com/auth/gmail.send。
但是,在同意屏幕上,用户可以取消勾选“代表您发送电子邮件”复选框,这对我们来说是不可接受的,请参见下文:
我们已经看到很多示例,其中 Google 同意屏幕上没有启用的复选框。所以,我们很想弄清楚如何在我们的应用程序中隐藏/禁用复选框,你能建议吗?
可能是因为我们的申请还没有经过验证,但我不确定这是否是原因。
谢谢,叶夫根尼。
oauth google-api google-oauth gmail-api google-developers-console
我读过类似的问题,例如“我们很抱歉,发生服务器错误。请稍等片刻,然后再试一次。”以及许多其他问题,但它们特定于其他类型的错误。
我有一个 Google Apps 脚本运行和处理带有分钟计时器的 Gmail 电子邮件。
每天我都会通过电子邮件收到日志We're sorry, a server error occurred. Please wait a bit and try again.(请参见下面的屏幕截图 1)。问题在于:
没有发生错误所在行的报告,因此很难调试
它时不时地随机发生,即使在这个精确的时间没有发生任何事情(没有要处理的电子邮件),并且在 99.9% 的时间里,一切正常,没有错误。当没有要处理的电子邮件时,我不明白为什么此代码会失败:
var mylabel = GmailApp.getUserLabelByName('emailstoprocess');
var threads = mylabel.getThreads();
for (var i = 0; i < threads.length; i++) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
在我的脚本中,我不调用任何外部 API,只调用 Gmail API,并且没有耗时的循环(尤其是当没有新电子邮件时:脚本应该什么都不做)。我怎样才能控制这个DEADLINE_EXCEEDED错误(见下面的截图 #2)?确实在仪表板,Executions页面中,我看到:We're sorry, a server error occurred: DEADLINE_EXCEEDED。
DEADLINE_EXCEEDED即使我的脚本在失败时什么也没做,如何避免这个错误?
或者至少如何避免每天收到有关此的通知?
javascript google-apps deadlines google-apps-script gmail-api
gmail-api ×10
python ×3
gmail ×2
google-api ×2
deadlines ×1
email ×1
google-apps ×1
google-oauth ×1
javascript ×1
mime ×1
node.js ×1
oauth ×1
php ×1
python-3.x ×1