在使用多种(人类)语言创建标签时,将邮件项目迁移到Gmail邮箱时遇到了一些问题。请在提供答案之前阅读该方案。我为这篇文章的篇幅道歉。
方案
注意:我知道预定义的SYSTEM标签不能用作/重新创建为USER标签。我知道USER标签不能嵌套在SYSTEM标签下。我理解USER和SYSTEM标签之间的区别。奇怪的"平坦"需要使用嵌套标签语法生成并包含SYSTEM标签部分的标签(并且有效。)
通过调用以下内容来利用标签缓存。这样,不会尝试重新创建已存在的标签。缓存执行与Google.Apis.Gmail.v1.Data.Label.Name
属性的比较。
UsersResource.LabelsResource.List(string userId)
根据系统或系统的配置,无论系统或系统的配置如何,都会根据邮件的提取位置生成标签。
示例D:邮件消息存储在Exchange文件夹结构中" Posta in arrivo / Test"。这会导致尝试在到达时创建" Posta"标签是收件箱的意大利语。
无法创建标签,毕竟它是一个SYSTEM标签。不期望的是该产品试图创建标签,因为它应该已经存在于缓存中。
进一步挖掘后,此缓存概念适用于英语环境,因为API提取/缓存的SYSTEM标签名称列表与用户邮箱中的标签名称相匹配。但是,在意大利语环境中,API调用会返回英语环境中的标签名称(和ID)。这导致产品尝试使用外语中的SYSTEM标签名称创建无效的标签。发生这种情况是因为缓存不包含使用英语的外语语言的SYSTEM标签名称。
其他
使用收件箱SYSTEM标签作为示例。 API将始终返回以下内容。
{
"id": "INBOX",
"name": "INBOX",
"messageListVisibility": "hide",
"labelListVisibility": "labelShow",
"type": "system"
}
实施例B表明它可以制造"扁平"使用SYSTEM标签名称作为USER标签的一部分的标签。它还显示了使用SYSTEM标签名称制作嵌套的USER标签的可能性。
Gmail邮箱使用的语言与是否可以创建其他语言的SYSTEM标签无关。标签" Posta in arrivo"如果邮箱设置为英语或意大利语,则无法创建。
问题
似乎没有以编程方式处理API公开的此问题。应避免手动映射字符串的概念,以支持API本身提供的解决方案。