本文档介绍了 Email Settings API 与 Gmail API 之间的主要区别。您可以使用本指南帮助将应用迁移到 Gmail API。
向请求授权
与 Email Settings API 一样,Gmail API 使用 OAuth 2.0 协议来授权请求。一个关键区别是,Gmail API 权限的范围是单个用户,而不是整个网域。这意味着,授权域名管理员账号后,您将无法为该网域中的其他用户迁移邮件。而是必须使用管理控制台中列入白名单的具有网域级权限的标准服务账号来生成适当的身份验证令牌。
Email Settings 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
协议变更
Email Settings 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 HIDE 现为 labelHide |
其他变更:
- 更新或删除标签时,Gmail API 会按 ID(而非名称)引用标签。
管理过滤条件
如需在 Gmail API 中管理过滤器,请使用 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 中管理“以某人名义发送”别名,请使用 SendAs 资源。
旧设置 | 新设置 |
---|---|
name | displayName |
地址 | sendAsEmail |
replyTo | replyToAddress |
makeDefault | isDefault |
管理网页剪辑
您无法再通过 API 设置 Web 剪辑。
管理自动转发设置
如需在 Gmail API 中管理自动转发,请使用设置资源。
旧设置 | 新设置 | 备注 |
---|---|---|
启用 | 已启用 | |
forwardTo | emailAddress | |
action | disposition | KEEP 现为 leaveInInbox ARCHIVE 现为 archive DELETE 现为 trash MARK_READ 现为 markRead |
其他变更:
- 转发地址必须先创建并经过验证,然后才能使用
- 您可以通过 ForwardingAddresses 资源管理转发地址。
管理 POP 设置
如需在 Gmail API 中管理 POP 访问权限,请使用 Settings 资源。
旧设置 | 新设置 | 备注 |
---|---|---|
启用 | accessWindow | 设置为 disabled 时处于停用状态 |
enableFor | accessWindow | ALL_MAIL 现为 allMail MAIL_FROM_NOW_ON 现为 fromNowOn |
action | disposition | KEEP 现为 leaveInInbox ARCHIVE 现为 archive DELETE 现为 trash MARK_READ 现为 markRead |
管理 IMAP 设置
如需在 Gmail API 中管理 IMAP 访问权限,请使用 Settings 资源。
旧设置 | 新设置 |
---|---|
启用 | 已启用 |
管理外出自动回复设置
如需在 Gmail API 中管理外出自动回复,请使用设置资源。
旧设置 | 新设置 |
---|---|
contactsOnly | restrictToContacts |
domainOnly | restrictToDomain |
启用 | enableAutoReply |
endDate | endTime |
消息 | responseBodyHtml responseBodyPlainText |
startDate | startTime |
对象 | responseSubject |
管理签名设置
如需在 Gmail API 中管理电子邮件签名,请使用 SendAs 资源。
旧设置 | 新设置 |
---|---|
签名 | 签名 |
其他变更:
- 签名现在按别名进行管理。
管理语言设置
如需在 Gmail API 中管理语言设置,请使用 Settings 资源。
旧设置 | 新设置 |
---|---|
language | displayLanguage |
如需了解详情,请参阅“管理语言设置”指南。
管理委托设置
如需在 Gmail API 中管理委托,请使用 Delegates 资源。
旧设置 | 新设置 |
---|---|
地址 | delegateEmail |
状态 | verificationStatus |
其他变更:
- 常规
- 如需使用任何委托方法(包括 delegates.create),委托者用户必须已启用 Gmail。例如,这意味着委托人用户无法在Google Workspace中被暂停。
- 电子邮件别名无法用作任何新方法的受托人电子邮件地址输入。必须使用受托人用户的主电子邮件地址来引用该用户。
- delegates.create
- 此方法现在可用于跨属于同一 Google Workspace组织的多个网域创建委托关系。
- 现在,此方法可用于要求用户在下次登录时更改密码。
- 如果成功,此方法将在响应正文中返回 Users.settings.delegates 资源,而不是空的响应正文。
- 如果委托者或受托用户之一处于停用状态(例如,在 Google Workspace中被暂停),此方法将失败并返回 HTTP 4XX 错误,而不是 HTTP 500 错误。
- delegates.delete
- 现在,此方法可用于删除具有任何verificationStatus(而不仅仅是
accepted
或expired
)的代理。
- 现在,此方法可用于删除具有任何verificationStatus(而不仅仅是
- delegates.get
- 这是一种新方法,根据需要,它可能优于 delegates.list 方法。
管理常规设置
您无法再通过 API 使用通用设置。