【发布时间】:2015-03-17 10:00:01
【问题描述】:
当用户在我的应用程序中注册时,我想创建一个 Zimbra 帐户。 在 Zimbra 中是否有任何 SOAP/REST 调用来完成这项工作。
如果有其他方法请告诉我。
【问题讨论】:
标签: zimbra
当用户在我的应用程序中注册时,我想创建一个 Zimbra 帐户。 在 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>
【讨论】:
我需要在我的 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 的同一机器上运行您的应用程序,那么您可以使用此界面。
【讨论】: