Managing identities with PHP API
In WebMail Lite, each email account can have multiple identities, and by default it has at least one. You can read more on identities here: How to use or disable identities
The below sample creates a new identity for existing email account.
We identify the account by the email address, and specify details of the identity we need to be added.
$sEmail = 'user@domain.com';
$identity = "userid2@domain.com";
$identityname = "New IDentity";
include '/var/www/html/webmail/system/autoload.php';
\Aurora\System\Api::Init(true);
$oCoreDecorator = \Aurora\Modules\Core\Module::Decorator();
$oMailDecorator = \Aurora\Modules\Mail\Module::Decorator();
$oUser = $oCoreDecorator->GetUserByPublicId($sEmail);
if ($oUser!==false) {
$iUserId = $oUser->EntityId;
$oAccount = $oCoreDecorator->GetAccountUsedToAuthorize($sEmail);
$iAccountId = $oAccount->EntityId;
$oMailDecorator->CreateIdentity($iUserId, $iAccountId, $identityname, $identity);
}
NB: As always with using PHP, make sure the include directive holds an actual path to system/autoload.php
file.
If we need to delete an identity, we should go through all of them and delete those with matching email:
$sEmail = 'user@domain.com';
$identity = "userid2@domain.com";
include '/var/www/html/webmail/system/autoload.php';
\Aurora\System\Api::Init(true);
$oCoreModule = \Aurora\System\Api::GetModule("Core");
$oMailModule = \Aurora\System\Api::GetModule("Mail");
$oUser = $oCoreModule->GetUserByPublicId($sEmail);
$iUserId = $oUser->EntityId;
$oAccount = $oCoreModule->GetAccountUsedToAuthorize($sEmail);
$iAccountId = $oAccount->EntityId;
$aIdentities = $oMailModule->GetIdentities($iUserId);
foreach ($aIdentities as $oIdentity) {
if (($oIdentity->IdAccount == $iAccountId) && ($oIdentity->Email == $identity)) {
$oMailModule->DeleteIdentity($iAccountId, $oIdentity->EntityId);
}
}