本文档可帮助您将应用从已弃用的 Email Settings API 迁移到 Gmail API。
向请求授权
与 Email Settings API 一样,Gmail API 使用 OAuth 2.0 协议对请求进行授权。一个主要区别在于,Gmail API 权限的范围限定为单个用户,而不是整个网域。这意味着,授权网域管理员账号后,您无法迁移网域中其他用户的邮件。而是必须使用具有网域级权限的标准服务账号,这些账号已添加到 Google 管理控制台中的许可名单,才能生成相应的身份验证令牌。
电子邮件设置 API 使用了以下范围:
https://apps-apis.google.com/a/feeds/emailsettings/2.0/
Gmail API 中的等效范围为:
https://www.googleapis.com/auth/gmail.settings.basic
https://www.googleapis.com/auth/gmail.settings.sharing
协议更改
电子邮件设置 API 使用基于 XML 的 GDATA 协议。Gmail API 使用 JSON。由于设置主要由键值对组成,因此不同版本之间的载荷在概念上是相似的。
创建标签的示例:
Email Settings API
POST https://apps-apis.google.com/a/feeds/emailsettings/2.0/{domain name}/{username}/label
<?xml version="1.0" encoding="utf-8"?>
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006">
<apps:property name="label" value="status updates" />
</atom:entry>
Gmail API
POST https://www.googleapis.com/gmail/v1/users/{username}/labels
{
"name": "status updates"
}
请使用提供的客户端库,而不是直接实现协议。
管理标签
如需在 Gmail API 中管理标签,请使用 labels 资源。
| 旧设置 | 新设置 | 备注 |
|---|---|---|
| labelId | id | |
| 标签 | name | |
| unreadCount | messagesUnread | |
| visibility | labelListVisibility | SHOW现为labelShow现为 HIDElabelHide |
其他变更:
- 更新或删除标签时,Gmail API 会按 ID 而不是按名称引用标签。
管理过滤条件
如需在 Gmail API 中管理过滤器,请使用 settings.filters 资源。
| 旧设置 | 新设置 | 备注 |
|---|---|---|
| 来自 | criteria.from | |
| 至 | criteria.to | |
| 对象 | criteria.subject | |
| hasTheWord | criteria.query | |
| doesNotHaveTheWord | criteria.negatedQuery | |
| hasAttachment | criteria.hasAttachment | |
| shouldArchive | action.removeLabelIds | 使用 INBOX 作为标签 ID |
| shouldMarkAsRead | action.removeLabelIds | 使用 UNREAD 作为标签 ID |
| shouldStar | action.addLabelIds | 使用 STARRED 作为标签 ID |
| 标签 | action.addLabelIds | 使用标签的 ID 添加标签 |
| forwardTo | action.forward | |
| shouldTrash | action.addLabelIds | 使用 TRASH 作为标签 ID |
| neverSpam | action.removeLabelIds | 使用 SPAM 作为标签 ID |
其他变更:
- 如果要添加的用户标签尚不存在,必须使用
labels.create方法明确创建。
管理“发件人别名”
如需在 Gmail API 中管理“发件人别名”,请使用 settings.sendAs 资源。
| 旧设置 | 新设置 |
|---|---|
| name | displayName |
| 地址 | sendAsEmail |
| replyTo | replyToAddress |
| makeDefault | isDefault |
管理网页剪辑
Gmail API 中不提供 Web 剪辑设置。
管理自动转发
如需在 Gmail API 中管理自动转发,请使用 settings 资源。
| 旧设置 | 新设置 | 备注 |
|---|---|---|
| 启用 | 已启用 | |
| forwardTo | emailAddress | |
| action | disposition | KEEP 现为 leaveInInboxARCHIVE 现为 archiveDELETE 现为 trashMARK_READ 现为 markRead |
其他变更:
- 必须先创建并验证转发地址,然后才能使用。
- 可以使用
settings.forwardingAddresses资源管理转发地址。
管理 POP 设置
如需在 Gmail API 中管理 POP 访问权限,请使用 settings 资源。
| 旧设置 | 新设置 | 备注 |
|---|---|---|
| 启用 | accessWindow | 设置为 disabled 时停用 |
| enableFor | accessWindow | ALL_MAIL现为allMail现为 MAIL_FROM_NOW_ONfromNowOn |
| action | disposition | KEEP 现为 leaveInInboxARCHIVE 现为 archiveDELETE 现为 trashMARK_READ 现为 markRead |
管理 IMAP 设置
如需在 Gmail API 中管理 IMAP 访问权限,请使用 settings 资源。
| 旧设置 | 新设置 |
|---|---|
| 启用 | 已启用 |
管理外出自动回复设置
如需在 Gmail API 中管理外出自动回复,请使用 settings 资源。
| 旧设置 | 新设置 |
|---|---|
| contactsOnly | restrictToContacts |
| domainOnly | restrictToDomain |
| 启用 | enableAutoReply |
| endDate | endTime |
| 私信 | responseBodyHtml responseBodyPlainText |
| startDate | startTime |
| 对象 | responseSubject |
管理签名设置
如需在 Gmail API 中管理电子邮件签名,请使用 settings.sendAs 资源。
| 旧设置 | 新设置 |
|---|---|
| 签名 | 签名 |
其他变更:
- 现在,签名是按别名管理的。
管理语言设置
如需在 Gmail API 中管理语言设置,请使用 settings 资源。
| 旧设置 | 新设置 |
|---|---|
| language | displayLanguage |
如需了解详情,请参阅管理语言设置。
管理委托设置
如需在 Gmail API 中管理委托,请使用 settings.delegates 资源。
| 旧设置 | 新设置 |
|---|---|
| 地址 | delegateEmail |
| 状态 | verificationStatus |
其他变更:
- 概要
- 如需使用任何委托方法(包括
settings.delegates.create),必须为委托人用户启用 Gmail。这意味着,例如,在 Google Workspace 中,委托人用户无法被暂停。 - 邮箱别名不能用作任何新方法的委托电子邮件输入。委托用户必须使用其主电子邮件地址进行引用。
- 如需使用任何委托方法(包括
settings.delegates.create- 现在,此方法可用于在属于同一 Google Workspace 组织的多个网域之间创建委托关系。
- 此方法现在可用于需要在下次登录时更改密码的用户。
- 如果成功,此方法将在响应正文中返回
settings.delegates资源,而不是空的响应正文。 - 如果委托人或受托人用户处于停用状态(例如,在 Google Workspace 中被暂停),此方法会失败并显示 HTTP 4XX 错误,而不是 HTTP 500 错误。
settings.delegates.delete- 此方法现在可用于删除具有任何
VerificationStatus的委托,而不仅仅是accepted或expired的委托。
- 此方法现在可用于删除具有任何
settings.delegates.get- 这是一种新方法,根据需要,它可能比
settings.delegates.list方法更可取。
- 这是一种新方法,根据需要,它可能比
管理常规设置
Gmail API 中不提供常规设置。