Gmail 添加 SENT 或 DRAFT 标签
Gmail add SENT or DRAFT label
我有一个使用 Gmail 的 "archive" 功能获得的 mbox 文件。其中的每封邮件都有一个 "X-Gmail-Labels" header 列表,其中 labels/folders 它进入。当我将 mbox 文件中的邮件导入新的 Gmail 帐户时(通过在 Thunderbird 中打开文件并复制邮件结束),新 Gmail 帐户中的邮件副本仍然具有 X-Gmail-Labels header,但它没有任何作用 - 邮件实际上没有标记任何标签。所以我写了一个脚本来使用 Gmail API 来获取每封邮件,阅读它的 X-Gmail-Labels,并将这些标签添加到邮件中。这主要是有效的,除了两个标签(SENT 和 DRAFT),我收到一个错误,说它是一个无效的标签。这些标签 ID 确实存在。如何将它们添加到消息中?
这是我提出的请求:
curl -H "Authorization: Bearer OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-X POST \
-d '{"addLabelIds": ["SENT"]}' \
https://www.googleapis.com/gmail/v1/users/me/messages/MESSAGE_ID/modify
这是回复 body:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidArgument",
"message": "Invalid label: SENT"
}
],
"code": 400,
"message": "Invalid label: SENT"
}
}
(注意:我的实际脚本在 Python 中,但在 curl 中更容易看到发生了什么。)
SENT
- 和 DRAFT
- 标签的特殊之处在于它们一旦创建就无法添加到消息中。有关每个标签的更多信息,请参见 this guide.
相反,您可以 insert your messages 并立即给他们正确的标签。
这是一个示例,只是在开发者控制台中对示例消息进行了编码:
一条消息已发送
var encodedMessage = btoa([
'From: example@gmail.com', '\r\n',
'To: example@gmail.com', '\r\n',
'Subject: cool subject', '\r\n',
'\r\n',
'this is my sent message'
].join(''))
请求
POST https://www.googleapis.com/gmail/v1/users/me/messages?access_token={YOUR_API_KEY}
{
"raw": "RnJvbTogZW10aG9saW5AZ21haWwuY29tDQpUbzogZW10aG9saW5AZ21haWwuY29tDQpTdWJqZWN0OiBjb29sIHN1YmplY3QNCg0KdGhpcyBpcyBteSBzZW50IG1lc3NhZ2U=",
"labelIds": [
"SENT"
]
}
回应
{
"id": "1525643b0785e7d7",
"threadId": "1525643b0785e7d7",
"labelIds": [
"SENT"
]
}
一稿
请求
POST https://www.googleapis.com/gmail/v1/users/me/messages?access_token={YOUR_API_KEY}
{
"raw": "RnJvbTogZW10aG9saW5AZ21haWwuY29tDQpUbzogZW10aG9saW5AZ21haWwuY29tDQpTdWJqZWN0OiBjb29sIHN1YmplY3QNCg0KdGhpcyBpcyBteSBzZW50IG1lc3NhZ2U=",
"labelIds": [
"DRAFT"
]
}
回应
{
"id": "1525644c9553906d",
"threadId": "1525644c9553906d",
"labelIds": [
"DRAFT"
]
}
此外,如果您希望创建的时间与插入消息中的 Date
-header 相同,请确保传递值为 [=] 的查询参数 internalDateSource
19=].
我有一个使用 Gmail 的 "archive" 功能获得的 mbox 文件。其中的每封邮件都有一个 "X-Gmail-Labels" header 列表,其中 labels/folders 它进入。当我将 mbox 文件中的邮件导入新的 Gmail 帐户时(通过在 Thunderbird 中打开文件并复制邮件结束),新 Gmail 帐户中的邮件副本仍然具有 X-Gmail-Labels header,但它没有任何作用 - 邮件实际上没有标记任何标签。所以我写了一个脚本来使用 Gmail API 来获取每封邮件,阅读它的 X-Gmail-Labels,并将这些标签添加到邮件中。这主要是有效的,除了两个标签(SENT 和 DRAFT),我收到一个错误,说它是一个无效的标签。这些标签 ID 确实存在。如何将它们添加到消息中?
这是我提出的请求:
curl -H "Authorization: Bearer OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-X POST \
-d '{"addLabelIds": ["SENT"]}' \
https://www.googleapis.com/gmail/v1/users/me/messages/MESSAGE_ID/modify
这是回复 body:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidArgument",
"message": "Invalid label: SENT"
}
],
"code": 400,
"message": "Invalid label: SENT"
}
}
(注意:我的实际脚本在 Python 中,但在 curl 中更容易看到发生了什么。)
SENT
- 和 DRAFT
- 标签的特殊之处在于它们一旦创建就无法添加到消息中。有关每个标签的更多信息,请参见 this guide.
相反,您可以 insert your messages 并立即给他们正确的标签。
这是一个示例,只是在开发者控制台中对示例消息进行了编码:
一条消息已发送
var encodedMessage = btoa([
'From: example@gmail.com', '\r\n',
'To: example@gmail.com', '\r\n',
'Subject: cool subject', '\r\n',
'\r\n',
'this is my sent message'
].join(''))
请求
POST https://www.googleapis.com/gmail/v1/users/me/messages?access_token={YOUR_API_KEY}
{
"raw": "RnJvbTogZW10aG9saW5AZ21haWwuY29tDQpUbzogZW10aG9saW5AZ21haWwuY29tDQpTdWJqZWN0OiBjb29sIHN1YmplY3QNCg0KdGhpcyBpcyBteSBzZW50IG1lc3NhZ2U=",
"labelIds": [
"SENT"
]
}
回应
{
"id": "1525643b0785e7d7",
"threadId": "1525643b0785e7d7",
"labelIds": [
"SENT"
]
}
一稿
请求
POST https://www.googleapis.com/gmail/v1/users/me/messages?access_token={YOUR_API_KEY}
{
"raw": "RnJvbTogZW10aG9saW5AZ21haWwuY29tDQpUbzogZW10aG9saW5AZ21haWwuY29tDQpTdWJqZWN0OiBjb29sIHN1YmplY3QNCg0KdGhpcyBpcyBteSBzZW50IG1lc3NhZ2U=",
"labelIds": [
"DRAFT"
]
}
回应
{
"id": "1525644c9553906d",
"threadId": "1525644c9553906d",
"labelIds": [
"DRAFT"
]
}
此外,如果您希望创建的时间与插入消息中的 Date
-header 相同,请确保传递值为 [=] 的查询参数 internalDateSource
19=].