我正在使用 Zimbra 提供的 REST API 来定期(以编程方式)轮询我的 Zimbra 电子邮件服务器上的消息。
根据文档,我需要通过查询字符串传递一个 zauthtoken,才能成功检索数据。
唯一的问题是文档没有提到如何获得或创建 zauth_token,这意味着我无能为力。
我已经广泛搜索了 Zimbra 文档和在线文档,但我似乎找不到任何显示如何创建或获取身份验证令牌的内容。
有谁知道我如何获取/创建身份验证令牌,以便以编程方式访问收件箱中的电子邮件?
我正在使用 Zimbra 提供的 REST API 来定期(以编程方式)轮询我的 Zimbra 电子邮件服务器上的消息。
根据文档,我需要通过查询字符串传递一个 zauthtoken,才能成功检索数据。
唯一的问题是文档没有提到如何获得或创建 zauth_token,这意味着我无能为力。
我已经广泛搜索了 Zimbra 文档和在线文档,但我似乎找不到任何显示如何创建或获取身份验证令牌的内容。
有谁知道我如何获取/创建身份验证令牌,以便以编程方式访问收件箱中的电子邮件?
我将假设您是最终用户,而不是邮件服务器的管理员。您要查找的令牌是一个名为 ZM_AUTH_TOKEN 的 cookie,通常会在用户登录时设置。也就是说,您不需要使用令牌身份验证来通过 API 访问您的收件箱;您可以通过在请求中提供您的用户名/密码来轻松进行身份验证(例如,使用 curl 的--user
选项)。如果您真的特别需要令牌,这里有一个示例,说明如何使用 curl 生成它:
curl --user 'your-username-here:your-password here' 'https://your-zimbra-server-here.com/home/your.account.name@your-zimbra-server-here.com/Inbox/?fmt=sync&auth=sc' -c 'where-you-want-to-save-your-cookie-file'
这是一个非常简单的 curl 命令,但我想强调一些 Zimbra 特定的位: URL ( ) 末尾的查询?fmt=sync&auth=sc
对于检索您正在寻找的令牌至关重要。该auth=sc
部分强制 Zimbra 返回一个 auth cookie。从fmt=sync
技术上讲,它可以是任何有效的格式,但您必须指定一些东西;我选择了同步,因为它实际上并不查找任何电子邮件数据,因此应该比返回电子邮件数据的命令更快地完成。
一旦该 curl 命令完成,您将把 ZM_AUTH_TOKEN cookie 保存到您在-c
选项后指定的任何文件中。然后,您可以将此 cookie 的值作为zauthtoken
REST 查询 URL 中的值传递,它们将正确地进行身份验证,而无需您提供任何其他格式的凭据:
curl 'https://your-zimbra-server-here.com/home/your.account.name@your-zimbra-server-here.com/Inbox/?auth=qp&zauthtoken=0_your-zauth-token-always-starts-with-zero-and-an-underscore-dont-append-an-additional-one-this-is-just-an-example'
同样,如果您已经在使用 curl,这有点毫无意义,因为您可以只使用该--user
选项,但如果您需要以其他没有类似功能的方式访问 URL,它可能会有所帮助。如果您必须使用令牌,请注意,每次当前的 cookie/令牌过期时,您都必须生成一个新的 cookie/令牌。