public function serviceMail($url, $serviceUrl, $flags, &$err_code, &$err_msg, &$pt)
{
// Sequence validation
$this->ensureIsProxy();
$this->ensureAuthenticationCallSuccessful();
// Argument validation
if (gettype($url) != 'string') {
throw new CAS_TypeMismatchException($url, '$url', 'string');
}
if (gettype($serviceUrl) != 'string') {
throw new CAS_TypeMismatchException($serviceUrl, '$serviceUrl', 'string');
}
if (gettype($flags) != 'integer') {
throw new CAS_TypeMismatchException($flags, '$flags', 'string');
}
try {
$service = $this->getProxiedService(PHPCAS_PROXIED_SERVICE_IMAP);
$service->setServiceUrl($serviceUrl);
$service->setMailbox($url);
$service->setOptions($flags);
$stream = $service->open();
$err_code = PHPCAS_SERVICE_OK;
$pt = $service->getImapProxyTicket();
return $stream;
} catch (CAS_ProxyTicketException $e) {
$err_msg = $e->getMessage();
$err_code = $e->getCode();
$pt = false;
return false;
} catch (CAS_ProxiedService_Exception $e) {
$lang = $this->getLangObj();
$err_msg = sprintf($lang->getServiceUnavailable(), $url, $e->getMessage());
$err_code = PHPCAS_SERVICE_NOT_AVAILABLE;
$pt = false;
return false;
}
}