从 Email Settings API 迁移

本文档旨在帮助您将应用从已弃用的 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
HIDE 现为 labelHide

其他变更:

  • 更新或删除标签时,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 不支持网页剪报设置。

管理自动转发

如需在 Gmail API 中管理自动转发,请使用 settings 资源。

旧设置 新设置 备注
启用 已启用
forwardTo emailAddress
action disposition KEEP 现为 leaveInInbox
ARCHIVE 现为 archive
DELETE 现为 trash
MARK_READ 现为 markRead

其他变更:

  • 您必须先创建并验证转发地址,然后才能使用它们。
  • 如需管理转发地址,请使用 settings.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 中管理外出自动回复,请使用 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 的委托人,而不仅仅是 acceptedexpired 的委托人。
  • settings.delegates.get

管理常规设置

Gmail API 不支持常规设置。