I'm writing a PHP programme in order to add account into zimbra using SOAP.
Every thing (I assume) get well but I can't log in with news accounts unless change their password in the administration interface.
I used a PHP function found earlier on this site.
look at my function :
PHP Code:
<?php
function ZimbraAdminCreateAccount($Trace, $ServerAddress, $AdminUserName, $AdminPassword, $NewUserName, $NewPassword, $NewUserFamilyName, $NewUserSecondName, $NewUserDisplayName, $COSId)
{
$CurlHandle = curl_init();
curl_setopt($CurlHandle, CURLOPT_URL, "https://$ServerAddress:7071/service/admin/soap");
curl_setopt($CurlHandle, CURLOPT_POST, TRUE);
curl_setopt($CurlHandle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($CurlHandle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($CurlHandle, CURLOPT_SSL_VERIFYHOST, FALSE);
// ------ Send the zimbraAdmin AuthRequest -----
$SOAPMessage = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<context xmlns="urn:zimbra"/>
</soap:Header>
<soap:Body>
<AuthRequest xmlns="urn:zimbraAdmin">
<name>' . $AdminUserName . '</name>
<password>' . $AdminPassword . '</password>
</AuthRequest>
</soap:Body>
</soap:Envelope>';
curl_setopt($CurlHandle, CURLOPT_POSTFIELDS, $SOAPMessage);
if(!($ZimbraSOAPResponse = curl_exec($CurlHandle)))
{
print("ERROR: curl_exec - (" . curl_errno($CurlHandle) . ") " . curl_error($CurlHandle));
return(FALSE);
}
// print("Raw Zimbra SOAP Response:<BR>" . htmlentities($ZimbraSOAPResponse) . "<BR><BR>\n");
// Parse for the sessionId
// <sessionId type="admin" id="123">123</sessionId>
$sessionId = strstr($ZimbraSOAPResponse, "<sessionId");
$sessionId = strstr($sessionId, ">");
$sessionId = substr($sessionId, 1, strpos($sessionId, "<") - 1);
// print("sessionId = $sessionId<BR>\n");
// Parse for the authToken
// <authToken>123</authToken>
$authToken = strstr($ZimbraSOAPResponse, "<authToken");
$authToken = strstr($authToken, ">");
$authToken = substr($authToken, 1, strpos($authToken, "<") - 1);
// print("authToken = $authToken<BR>\n");
// ------ Send the zimbraCreateAccount request -----
$SOAPMessage = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<context xmlns="urn:zimbra">
<authToken>' . $authToken . '</authToken>
<sessionId id="' . $sessionId . '">' . $sessionId . '</sessionId>
</context>
</soap:Header>
<soap:Body>
<CreateAccountRequest xmlns="urn:zimbraAdmin">
<name>' . $NewUserName . '</name>
<password>' . $NewUserPassword . '</password>
<a n="zimbraCOSId">' . $COSId . '</a>
<a n="gn">' . $NewUserFamilyName . '</a>
<a n="sn">' . $NewUserSecondName . '</a>
<a n="displayName">' . $NewUserDisplayName . '</a>
</CreateAccountRequest>
</soap:Body>
</soap:Envelope>';
curl_setopt($CurlHandle, CURLOPT_POSTFIELDS, $SOAPMessage);
if(!($ZimbraSOAPResponse = curl_exec($CurlHandle)))
{
print("ERROR: curl_exec - (" . curl_errno($CurlHandle) . ") " . curl_error($CurlHandle));
return(FALSE);
}
// print("Raw Zimbra SOAP Response:<BR>" . htmlentities($ZimbraSOAPResponse) . "<BR><BR>\n");
return($ZimbraSOAPResponse);
}
I supply the password in clair (without any encrypt).
Please, your help.