从 Email Settings API 迁移

本文档介绍了 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(而不仅仅是 acceptedexpired)的代理。
  • delegates.get
    • 这是一种新方法,根据需要,它可能优于 delegates.list 方法。

管理常规设置

您无法再通过 API 使用通用设置。