使用 SOAP/REST 创建 zimbra 用户帐户

zimbra user account creation using SOAP/REST

当用户在我的应用程序中注册时,我想创建一个 Zimbra 帐户。 有没有 SOAP/REST 要求在 Zimbra 中完成这项工作。

如果有其他方法,请告诉我。

SOAP 帐户创建请求应如下所示:

<CreateAccountRequest name="{account-name}" password="{account-password}"> ## CreateAccountRequest
    (<a n="{key}" /> ## Attr)*
</CreateAccountRequest>

name 包含完整的 Zimbra 帐户名称:uid@domain.com

如果您不指定password,用户将无法登录。(密码可以稍后设置)。

a 标签允许您发送一些可选属性。

示例:

<CreateAccountRequest xmlns="urn:zimbraAdmin">
    <name>username@domain.com</name>
    <password>foobar</password>
    <a n="givenName">John</a>
    <a n="sn">Doe</a>
    <a n="displayName">John Doe</a>
    <a n="zimbraCOSId">The CoS id comes here.</a>
</CreateAccountRequest>

文档: Zimbra SOAP requests

我需要在我的 NodeJS 应用程序中创建帐户和域,因此我为此实现了一个小型 nodeJS 库(zimbra-client)https://github.com/grishick/zimbra-client

创建账户示例:

zimbra = require("zimbra-client");
zimbra.getAuthToken("localhost", "admin", "test123",
    function(err, authToken) {
        if(err != null) {
            console.log(err.message);
        }
        zimbra.createAccount("localhost",{sn:"Solovyev",givenName:"Greg",displayName:"Greg Solovyev",password:"test123",name:"greg@example.com"},authToken,
            function(err1,accountObj) {
                if(err1 != null) {
                    if(err1.code == "account.ACCOUNT_EXISTS") {
                        console.log("an account with this name already exists");
                    } else {
                        console.log(err1.message);
                    }
                } else {
                    console.log("new account ID" + accountObj.id);
                }
            }
        );
    })

你问的还有其他方法吗。 还有另一种方法,从 zimbra 服务器上的命令行。

zmprov ca user@example.com somepassword

如果您可以 运行 您的应用程序位于 zimra 运行ning 所在的同一个盒子上,那么您可以使用此界面。