mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-21 23:43:17 +01:00
moving emailadmin to api and admin, only emailadmin_hooks and tables still need moving
This commit is contained in:
parent
a417310b9d
commit
00abda4682
@ -6,7 +6,7 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @package admin
|
* @package admin
|
||||||
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
* @copyright (c) 2006-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
* @copyright (c) 2006-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
@ -60,9 +60,10 @@ switch($action)
|
|||||||
case '--change-account-id':
|
case '--change-account-id':
|
||||||
return do_change_account_id($arg0s);
|
return do_change_account_id($arg0s);
|
||||||
|
|
||||||
|
/* ToDo: get this working again
|
||||||
case '--subscribe-other':
|
case '--subscribe-other':
|
||||||
return do_subscribe_other($arg0s[2],$arg0s[3]);
|
return do_subscribe_other($arg0s[2],$arg0s[3]);
|
||||||
|
*/
|
||||||
case '--check-acl';
|
case '--check-acl';
|
||||||
return do_check_acl();
|
return do_check_acl();
|
||||||
|
|
||||||
@ -281,11 +282,12 @@ function _check_pw($hash_or_cleartext,$pw)
|
|||||||
/**
|
/**
|
||||||
* Give a usage message and exit
|
* Give a usage message and exit
|
||||||
*
|
*
|
||||||
* @param string $action=null
|
* @param string $action =null
|
||||||
* @param int $ret=0 exit-code
|
* @param int $ret =0 exit-code
|
||||||
*/
|
*/
|
||||||
function usage($action=null,$ret=0)
|
function usage($action=null,$ret=0)
|
||||||
{
|
{
|
||||||
|
unset($action);
|
||||||
$cmd = basename($_SERVER['argv'][0]);
|
$cmd = basename($_SERVER['argv'][0]);
|
||||||
echo "Usage: $cmd --command admin-account[@domain],admin-password,options,... [--schedule {YYYY-mm-dd|+1 week|+5 days}] [--requested 'Name <email>'] [--comment 'comment ...'] [--remote {id|name}] [--skip-checks] [--dry-run]\n\n";
|
echo "Usage: $cmd --command admin-account[@domain],admin-password,options,... [--schedule {YYYY-mm-dd|+1 week|+5 days}] [--requested 'Name <email>'] [--comment 'comment ...'] [--remote {id|name}] [--skip-checks] [--dry-run]\n\n";
|
||||||
|
|
||||||
@ -355,15 +357,16 @@ function do_edit_group($args)
|
|||||||
try {
|
try {
|
||||||
admin_cmd::parse_account($account,false);
|
admin_cmd::parse_account($account,false);
|
||||||
|
|
||||||
foreach($data as $name => &$value) // existing account --> empty values mean dont change, not set them empty!
|
foreach($data as &$value) // existing account --> empty values mean dont change, not set them empty!
|
||||||
{
|
{
|
||||||
if ((string)$value === '') $value = null;
|
if ((string)$value === '') $value = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception $e) { // new group
|
catch (Exception $e) { // new group
|
||||||
|
unset($e); // not used
|
||||||
$data['account_lid'] = $account;
|
$data['account_lid'] = $account;
|
||||||
$account = false;
|
$account = false;
|
||||||
};
|
}
|
||||||
run_command(new admin_cmd_edit_group($account,$data));
|
run_command(new admin_cmd_edit_group($account,$data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,7 +389,7 @@ function do_change_pw($args)
|
|||||||
* Edit or add a user to EGroupware. If you specify groups, they *replace* the exiting memberships!
|
* Edit or add a user to EGroupware. If you specify groups, they *replace* the exiting memberships!
|
||||||
* 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12
|
* 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12
|
||||||
* @param array $args admin-account[@domain],admin-password,account[=new-account-name],first-name,last-name,password,email,expires{never(default)|YYYY-MM-DD|already},can-change-pw{true(default)|false},anon-user{true|false(default)},primary-group{Default(default)|...}[,groups,...][,homedirectory,loginshell]
|
* @param array $args admin-account[@domain],admin-password,account[=new-account-name],first-name,last-name,password,email,expires{never(default)|YYYY-MM-DD|already},can-change-pw{true(default)|false},anon-user{true|false(default)},primary-group{Default(default)|...}[,groups,...][,homedirectory,loginshell]
|
||||||
* @param boolean $run_addaccount_hook=null default run hook depending on account existence, true=allways run addaccount hook
|
* @param boolean $run_addaccount_hook =null default run hook depending on account existence, true=allways run addaccount hook
|
||||||
*/
|
*/
|
||||||
function do_edit_user($args,$run_addaccount_hook=null)
|
function do_edit_user($args,$run_addaccount_hook=null)
|
||||||
{
|
{
|
||||||
@ -419,15 +422,16 @@ function do_edit_user($args,$run_addaccount_hook=null)
|
|||||||
try {
|
try {
|
||||||
admin_cmd::parse_account($account,true);
|
admin_cmd::parse_account($account,true);
|
||||||
|
|
||||||
foreach($data as $name => &$value) // existing account --> empty values mean dont change, not set them empty!
|
foreach($data as &$value) // existing account --> empty values mean dont change, not set them empty!
|
||||||
{
|
{
|
||||||
if ((string)$value === '') $value = null;
|
if ((string)$value === '') $value = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception $e) { // new account
|
catch (Exception $e) { // new account
|
||||||
|
unset($e); // not used
|
||||||
$data['account_lid'] = $account;
|
$data['account_lid'] = $account;
|
||||||
$account = false;
|
$account = false;
|
||||||
};
|
}
|
||||||
run_command(new admin_cmd_edit_user($account,$data,null,$run_addaccount_hook));
|
run_command(new admin_cmd_edit_user($account,$data,null,$run_addaccount_hook));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -435,8 +439,8 @@ function do_edit_user($args,$run_addaccount_hook=null)
|
|||||||
* Delete a given acount from eGW
|
* Delete a given acount from eGW
|
||||||
*
|
*
|
||||||
* @param int/string $account account-name of -id
|
* @param int/string $account account-name of -id
|
||||||
* @param int/string $new_user=0 for users only: account to move the entries too
|
* @param int/string $new_user =0 for users only: account to move the entries too
|
||||||
* @param boolean $is_user=true are we called for a user or group
|
* @param boolean $is_user =true are we called for a user or group
|
||||||
* @return int 0 on success, 2-4 otherwise (see source)
|
* @return int 0 on success, 2-4 otherwise (see source)
|
||||||
*/
|
*/
|
||||||
function do_delete_account($account,$new_user=0,$is_user=true)
|
function do_delete_account($account,$new_user=0,$is_user=true)
|
||||||
@ -487,8 +491,9 @@ function list_exit_codes()
|
|||||||
error_reporting(error_reporting() & ~E_NOTICE);
|
error_reporting(error_reporting() & ~E_NOTICE);
|
||||||
|
|
||||||
$codes = array('Ok');
|
$codes = array('Ok');
|
||||||
foreach(file(__FILE__) as $n => $line)
|
foreach(file(__FILE__) as $line)
|
||||||
{
|
{
|
||||||
|
$matches = null;
|
||||||
if (preg_match('/fail\(([0-9]+),(.*)\);/',$line,$matches))
|
if (preg_match('/fail\(([0-9]+),(.*)\);/',$line,$matches))
|
||||||
{
|
{
|
||||||
//echo "Line $n: $matches[1]: $matches[2]\n";
|
//echo "Line $n: $matches[1]: $matches[2]\n";
|
||||||
@ -510,6 +515,8 @@ function list_exit_codes()
|
|||||||
*/
|
*/
|
||||||
function do_subscribe_other($account_lid,$pw=null)
|
function do_subscribe_other($account_lid,$pw=null)
|
||||||
{
|
{
|
||||||
|
unset($account_lid, $pw);
|
||||||
|
/* ToDo: this cant work, not even in 14.x
|
||||||
if (!($account_id = $GLOBALS['egw']->accounts->name2id($account_lid)))
|
if (!($account_id = $GLOBALS['egw']->accounts->name2id($account_lid)))
|
||||||
{
|
{
|
||||||
throw new egw_exception_wrong_userinput(lang("Unknown account: %1 !!!",$account_lid),15);
|
throw new egw_exception_wrong_userinput(lang("Unknown account: %1 !!!",$account_lid),15);
|
||||||
@ -544,14 +551,14 @@ function do_subscribe_other($account_lid,$pw=null)
|
|||||||
|
|
||||||
if (!$pw) $mailbox = str_replace('INBOX','user'.$delimiter.$account_lid,$mailbox);
|
if (!$pw) $mailbox = str_replace('INBOX','user'.$delimiter.$account_lid,$mailbox);
|
||||||
|
|
||||||
/* $rights = $icServer->getACL($mailbox);
|
//$rights = $icServer->getACL($mailbox);
|
||||||
echo "getACL($mailbox)\n";
|
//echo "getACL($mailbox)\n";
|
||||||
foreach($rights as $data)
|
//foreach($rights as $data)
|
||||||
{
|
//{
|
||||||
echo $data['USER'].' '.$data['RIGHTS']."\n";
|
// echo $data['USER'].' '.$data['RIGHTS']."\n";
|
||||||
}*/
|
//}
|
||||||
echo "subscribing $mailbox for $account_lid\n";
|
echo "subscribing $mailbox for $account_lid\n";
|
||||||
//$icServer->subscribeMailbox($mailbox);
|
//$icServer->subscribeMailbox($mailbox);
|
||||||
//exit;
|
//exit;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
@ -219,6 +219,42 @@ class admin_hooks
|
|||||||
'icon' => 'cancel',
|
'icon' => 'cancel',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// currently no way to deny Admins access to administrate mail
|
||||||
|
// we could add a deny check as for other admin functionality
|
||||||
|
{
|
||||||
|
$actions[] = array(
|
||||||
|
'id' => 'mail_account',
|
||||||
|
'caption' => 'mail account',
|
||||||
|
'url' => 'menuaction=admin.admin_mail.edit&account_id=$id',
|
||||||
|
'popup' => '720x530',
|
||||||
|
'icon' => 'mail/navbar',
|
||||||
|
);
|
||||||
|
|
||||||
|
$emailadmin = Api\Mail\Account::get_default();
|
||||||
|
if ($emailadmin->acc_smtp_type && $emailadmin->acc_smtp_type !== 'EGroupware\Api\Mail\Smtp')
|
||||||
|
{
|
||||||
|
$actions[] = array (
|
||||||
|
'id' => 'mail_activeAccounts',
|
||||||
|
'caption' => '(de)activate mail accounts',
|
||||||
|
'icon' => 'mail/navbar',
|
||||||
|
'children' => array (
|
||||||
|
'active' => array (
|
||||||
|
'caption' => 'activate',
|
||||||
|
'onExecute' => 'javaScript:app.admin.emailadminActiveAccounts',
|
||||||
|
'icon' => 'check',
|
||||||
|
'allowOnMultiple' => true
|
||||||
|
),
|
||||||
|
'inactive' => array (
|
||||||
|
'caption' => 'deactivate',
|
||||||
|
'onExecute' => 'javaScript:app.admin.emailadminActiveAccounts',
|
||||||
|
'icon' => 'bullet',
|
||||||
|
'allowOnMultiple' => true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
return $actions;
|
return $actions;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1520
admin/inc/class.admin_mail.inc.php
Normal file
1520
admin/inc/class.admin_mail.inc.php
Normal file
File diff suppressed because it is too large
Load Diff
@ -5,13 +5,15 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
* @package admin
|
* @package admin
|
||||||
* @copyright (c) 2011-14 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
* @copyright (c) 2011-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
include_once(EGW_INCLUDE_ROOT.'/setup/inc/hook_config.inc.php'); // functions to return password hashes
|
include_once(EGW_INCLUDE_ROOT.'/setup/inc/hook_config.inc.php'); // functions to return password hashes
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset passwords
|
* Reset passwords
|
||||||
*/
|
*/
|
||||||
@ -72,13 +74,13 @@ class admin_passwordreset
|
|||||||
{
|
{
|
||||||
if ($content['download_csv'] && $content['changed'])
|
if ($content['download_csv'] && $content['changed'])
|
||||||
{
|
{
|
||||||
html::content_header('changed.csv','text/csv');
|
Api\Header\Content::type('changed.csv', 'text/csv');
|
||||||
//echo "account_lid;account_password;account_email;account_firstname;account_lastname\n";
|
//echo "account_lid;account_password;account_email;account_firstname;account_lastname\n";
|
||||||
foreach($content['changed'] as $account)
|
foreach($content['changed'] as $account)
|
||||||
{
|
{
|
||||||
echo "$account[account_lid];$account[account_password];$account[account_email];$account[account_firstname];$account[account_lastname]\n";
|
echo "$account[account_lid];$account[account_password];$account[account_email];$account[account_firstname];$account[account_lastname]\n";
|
||||||
}
|
}
|
||||||
common::egw_exit();
|
exit;
|
||||||
}
|
}
|
||||||
if (!$content['users'])
|
if (!$content['users'])
|
||||||
{
|
{
|
||||||
@ -99,7 +101,7 @@ class admin_passwordreset
|
|||||||
{
|
{
|
||||||
if ($content['hash'] && $content['hash'] != $current_hash)
|
if ($content['hash'] && $content['hash'] != $current_hash)
|
||||||
{
|
{
|
||||||
config::save_value($account_repository.'_encryption_type',$content['hash'],'phpgwapi');
|
Api\Config::save_value($account_repository.'_encryption_type',$content['hash'],'phpgwapi');
|
||||||
$msg = lang('Changed password hash for %1 to %2.',strtoupper($account_repository),$content['hash'])."\n";
|
$msg = lang('Changed password hash for %1 to %2.',strtoupper($account_repository),$content['hash'])."\n";
|
||||||
$GLOBALS['egw_info']['server'][$account_repository.'_encryption_type'] = $content['hash'];
|
$GLOBALS['egw_info']['server'][$account_repository.'_encryption_type'] = $content['hash'];
|
||||||
}
|
}
|
||||||
@ -113,7 +115,7 @@ class admin_passwordreset
|
|||||||
//_debug_array($account); //break;
|
//_debug_array($account); //break;
|
||||||
if ($content['random_pw'])
|
if ($content['random_pw'])
|
||||||
{
|
{
|
||||||
$password = auth::randomstring(8);
|
$password = Api\Auth::randomstring(8);
|
||||||
$old_password = null;
|
$old_password = null;
|
||||||
}
|
}
|
||||||
elseif ($change_pw && !preg_match('/^{plain}/i',$account['account_pwd']) &&
|
elseif ($change_pw && !preg_match('/^{plain}/i',$account['account_pwd']) &&
|
||||||
@ -157,8 +159,8 @@ class admin_passwordreset
|
|||||||
{
|
{
|
||||||
if (!isset($emailadmin))
|
if (!isset($emailadmin))
|
||||||
{
|
{
|
||||||
$emailadmin = emailadmin_account::get_default();
|
$emailadmin = Api\Mail\Account::get_default();
|
||||||
if (!emailadmin_account::is_multiple($emailadmin))
|
if (!Api\Mail\Account::is_multiple($emailadmin))
|
||||||
{
|
{
|
||||||
$msg = lang('No default account found!');
|
$msg = lang('No default account found!');
|
||||||
break;
|
break;
|
||||||
@ -218,7 +220,7 @@ class admin_passwordreset
|
|||||||
{
|
{
|
||||||
$send->Send();
|
$send->Send();
|
||||||
}
|
}
|
||||||
catch (phpmailerException $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
unset ($e);
|
unset ($e);
|
||||||
$msg .= lang('Notifying account "%1" %2 failed!',$account['account_lid'],$account['account_email']).
|
$msg .= lang('Notifying account "%1" %2 failed!',$account['account_lid'],$account['account_email']).
|
||||||
@ -253,7 +255,7 @@ class admin_passwordreset
|
|||||||
|
|
||||||
$GLOBALS['egw_info']['flags']['app_header'] = lang('Bulk password reset');
|
$GLOBALS['egw_info']['flags']['app_header'] = lang('Bulk password reset');
|
||||||
|
|
||||||
$tmpl = new etemplate_new('admin.passwordreset');
|
$tmpl = new Api\Etemplate('admin.passwordreset');
|
||||||
$tmpl->exec('admin.admin_passwordreset.index',$content,$sel_options,$readonlys,array(
|
$tmpl->exec('admin.admin_passwordreset.index',$content,$sel_options,$readonlys,array(
|
||||||
'changed' => $changed,
|
'changed' => $changed,
|
||||||
));
|
));
|
||||||
|
253
admin/js/app.js
253
admin/js/app.js
@ -98,13 +98,15 @@ app.classes.admin = AppJS.extend(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'admin.categories.index':
|
|
||||||
break;
|
|
||||||
case 'admin.customfield_edit':
|
case 'admin.customfield_edit':
|
||||||
// Load settings appropriate to currently set type
|
// Load settings appropriate to currently set type
|
||||||
var widget = _et2.widgetContainer.getWidgetById('cf_type');
|
var widget = _et2.widgetContainer.getWidgetById('cf_type');
|
||||||
this.cf_type_change(null,widget);
|
this.cf_type_change(null,widget);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'admin.mailaccount':
|
||||||
|
this.account_hide_not_applying();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -809,19 +811,20 @@ app.classes.admin = AppJS.extend(
|
|||||||
jQuery(root.getWidgetById('cf_rows').getDOMNode()).toggle(attributes.cf_rows && true);
|
jQuery(root.getWidgetById('cf_rows').getDOMNode()).toggle(attributes.cf_rows && true);
|
||||||
jQuery(root.getWidgetById('cf_values').getParentDOMNode()).toggle(attributes.cf_values && true);
|
jQuery(root.getWidgetById('cf_values').getParentDOMNode()).toggle(attributes.cf_values && true);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Activate none standard SMTP mail accounts for selected users
|
* Activate none standard SMTP mail accounts for selected users
|
||||||
*
|
*
|
||||||
* @param {type} _selected selected users
|
* @param {egw_action} _action
|
||||||
|
* @param {array} _selected selected users
|
||||||
* @todo remove under construction message
|
* @todo remove under construction message
|
||||||
*/
|
*/
|
||||||
emailadminActiveAccounts: function (_action, _selected){
|
emailadminActiveAccounts: function (_action, _selected){
|
||||||
|
|
||||||
var menuaction = 'emailadmin.emailadmin_wizard.ajax_activeAccounts';
|
var menuaction = 'admin.admin_mail.ajax_activeAccounts';
|
||||||
var accounts = [];
|
var accounts = [];
|
||||||
var msg1 = egw.lang('%1 accounts being activated',Object.keys(_selected).length);
|
var msg1 = egw.lang('%1 accounts being activated',Object.keys(_selected).length);
|
||||||
|
|
||||||
for (var i=0;i< Object.keys(_selected).length;i++)
|
for (var i=0;i< Object.keys(_selected).length;i++)
|
||||||
{
|
{
|
||||||
accounts[i] = {id:_selected[i]['id'].split('::')[1],qouta:"", domain:"", status:_action.id == 'active'?_action.id:''};
|
accounts[i] = {id:_selected[i]['id'].split('::')[1],qouta:"", domain:"", status:_action.id == 'active'?_action.id:''};
|
||||||
@ -841,9 +844,241 @@ app.classes.admin = AppJS.extend(
|
|||||||
}
|
}
|
||||||
}, msg1, 'Mail Acounts Activation', menuaction, accounts, 'admin');
|
}, msg1, 'Mail Acounts Activation', menuaction, accounts, 'admin');
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
// confirmation dialog
|
// confirmation dialog
|
||||||
et2_dialog.show_dialog(callbackDialog, egw.lang('Are you sure you want to %1 mail for selected accounts?', egw.lang(_action.id)), egw.lang('Active Mail Accounts'), {},
|
et2_dialog.show_dialog(callbackDialog, egw.lang('Are you sure you want to %1 mail for selected accounts?', egw.lang(_action.id)), egw.lang('Active Mail Accounts'), {},
|
||||||
et2_dialog.BUTTON_YES_NO, et2_dialog.WARNING_MESSAGE, undefined, egw);
|
et2_dialog.BUTTON_YES_NO, et2_dialog.WARNING_MESSAGE, undefined, egw);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No SSL
|
||||||
|
*/
|
||||||
|
SSL_NONE: 0,
|
||||||
|
/**
|
||||||
|
* STARTTLS on regular tcp connection/port
|
||||||
|
*/
|
||||||
|
SSL_STARTTLS: 1,
|
||||||
|
/**
|
||||||
|
* SSL (inferior to TLS!)
|
||||||
|
*/
|
||||||
|
SSL_SSL: 3,
|
||||||
|
/**
|
||||||
|
* require TLS version 1+, no SSL version 2 or 3
|
||||||
|
*/
|
||||||
|
SSL_TLS: 2,
|
||||||
|
/**
|
||||||
|
* if set, verify certifcate (currently not implemented in Horde_Imap_Client!)
|
||||||
|
*/
|
||||||
|
SSL_VERIFY: 8,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resize window methode
|
||||||
|
*
|
||||||
|
* @returns {undefined}
|
||||||
|
*/
|
||||||
|
wizard_popup_resize: function ()
|
||||||
|
{
|
||||||
|
var $main_div = $j('#popupMainDiv');
|
||||||
|
var $et2 = $j('.et2_container');
|
||||||
|
var w = {
|
||||||
|
width: egw_getWindowInnerWidth(),
|
||||||
|
height: egw_getWindowInnerHeight()
|
||||||
|
};
|
||||||
|
// Use et2_container for width since #popupMainDiv is full width, but we still need
|
||||||
|
// to take padding/margin into account
|
||||||
|
var delta_width = w.width - ($et2.outerWidth(true) + ($main_div.outerWidth(true) - $main_div.width()));
|
||||||
|
var delta_height = w.height - ($et2.outerHeight(true) + ($main_div.outerHeight(true) - $main_div.height()));
|
||||||
|
if(delta_width != 0 || delta_height != 0)
|
||||||
|
{
|
||||||
|
window.resizeTo(egw_getWindowOuterWidth() - delta_width,egw_getWindowOuterHeight() - delta_height);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Switch account wizard to manual entry
|
||||||
|
*/
|
||||||
|
wizard_manual: function()
|
||||||
|
{
|
||||||
|
jQuery('.emailadmin_manual').fadeToggle();// not sure how to to this et2-isch
|
||||||
|
this.wizard_popup_resize(); // popup needs to be resized after toggling
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* onclick for continue button to show progress animation
|
||||||
|
*
|
||||||
|
* @param {object} _event event-object or information about event
|
||||||
|
* @param {et2_baseWidget} _widget widget causing the event
|
||||||
|
*/
|
||||||
|
wizard_detect: function(_event, _widget)
|
||||||
|
{
|
||||||
|
// we need to do a manual asynchronious submit to show progress animation
|
||||||
|
// default synchronious submit stops animation!
|
||||||
|
if (this.et2._inst.submit('button[continue]', true)) // true = async submit
|
||||||
|
{
|
||||||
|
var sieve_enabled = this.et2.getWidgetById('acc_sieve_enabled');
|
||||||
|
if (!sieve_enabled || sieve_enabled.get_value())
|
||||||
|
{
|
||||||
|
jQuery('#admin-mailwizard_output').hide();
|
||||||
|
jQuery('td.emailadmin_progress').show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set default port, if imap ssl-type changes
|
||||||
|
*
|
||||||
|
* @param {object} _event event-object or information about event
|
||||||
|
* @param {et2_baseWidget} _widget widget causing the event
|
||||||
|
*/
|
||||||
|
wizard_imap_ssl_onchange: function(_event, _widget)
|
||||||
|
{
|
||||||
|
var ssl_type = _widget.get_value();
|
||||||
|
this.et2.getWidgetById('acc_imap_port').set_value(
|
||||||
|
ssl_type == this.SSL_SSL || ssl_type == this.SSL_TLS ? 993 : 143);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set default port, if imap ssl-type changes
|
||||||
|
*
|
||||||
|
* @param {object} _event event-object or information about event
|
||||||
|
* @param {et2_baseWidget} _widget widget causing the event
|
||||||
|
*/
|
||||||
|
wizard_smtp_ssl_onchange: function(_event, _widget)
|
||||||
|
{
|
||||||
|
var ssl_type = _widget.get_value();
|
||||||
|
this.et2.getWidgetById('acc_smtp_port').set_value(
|
||||||
|
ssl_type == 'no' ? 25 : (ssl_type == this.SSL_SSL || ssl_type == this.SSL_TLS ? 465 : 587));
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set default port, if imap ssl-type changes
|
||||||
|
*
|
||||||
|
* @param {object} _event event-object or information about event
|
||||||
|
* @param {et2_baseWidget} _widget widget causing the event
|
||||||
|
*/
|
||||||
|
wizard_sieve_ssl_onchange: function(_event, _widget)
|
||||||
|
{
|
||||||
|
var ssl_type = _widget.get_value();
|
||||||
|
this.et2.getWidgetById('acc_sieve_port').set_value(
|
||||||
|
ssl_type == this.SSL_SSL || ssl_type == this.SSL_TLS ? 5190 : 4190);
|
||||||
|
this.wizard_sieve_onchange(_event, _widget);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable sieve, if user changes some setting
|
||||||
|
*
|
||||||
|
* @param {object} _event event-object or information about event
|
||||||
|
* @param {et2_baseWidget} _widget widget causing the event
|
||||||
|
*/
|
||||||
|
wizard_sieve_onchange: function(_event, _widget)
|
||||||
|
{
|
||||||
|
this.et2.getWidgetById('acc_sieve_enabled').set_value(1);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Switch to select multiple accounts
|
||||||
|
*
|
||||||
|
* @param {object} _event event-object or information about event
|
||||||
|
* @param {et2_baseWidget} _widget widget causing the event
|
||||||
|
*/
|
||||||
|
edit_multiple: function(_event, _widget)
|
||||||
|
{
|
||||||
|
// hide multiple button
|
||||||
|
_widget.set_disabled(true);
|
||||||
|
|
||||||
|
// switch account-selection to multiple
|
||||||
|
var account_id = this.et2.getWidgetById('account_id');
|
||||||
|
account_id.set_multiple(true);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide not applying fields, used as:
|
||||||
|
* - onchange handler on account_id
|
||||||
|
* - called from et2_ready for emailadmin.account template
|
||||||
|
*
|
||||||
|
* @param {object} _event event-object or information about event
|
||||||
|
* @param {et2_baseWidget} _widget widget causing the event
|
||||||
|
*/
|
||||||
|
account_hide_not_applying: function(_event, _widget)
|
||||||
|
{
|
||||||
|
var account_id = this.et2.getWidgetById('account_id');
|
||||||
|
var ids = account_id && account_id.get_value ? account_id.get_value() : [];
|
||||||
|
if (typeof ids == 'string') ids = ids.split(',');
|
||||||
|
|
||||||
|
var multiple = ids.length >= 2 || ids[0] === '' || ids[0] < 0;
|
||||||
|
//alert('multiple='+(multiple?'true':'false')+': '+ids.join(','));
|
||||||
|
|
||||||
|
// initial call
|
||||||
|
if (typeof _widget == 'undefined')
|
||||||
|
{
|
||||||
|
if (!multiple)
|
||||||
|
{
|
||||||
|
jQuery('.emailadmin_no_single').hide();
|
||||||
|
}
|
||||||
|
if (!this.egw.user('apps').emailadmin)
|
||||||
|
{
|
||||||
|
jQuery('.emailadmin_no_user,#button\\[multiple\\]').hide();
|
||||||
|
}
|
||||||
|
if (ids.length == 1)
|
||||||
|
{
|
||||||
|
// switch back to single selectbox
|
||||||
|
account_id.set_multiple(false);
|
||||||
|
this.et2.getWidgetById('button[multiple]').set_disabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// switched to single user
|
||||||
|
else if (!multiple)
|
||||||
|
{
|
||||||
|
jQuery('.emailadmin_no_single').fadeOut();
|
||||||
|
// switch back to single selectbox
|
||||||
|
account_id.set_multiple(false);
|
||||||
|
this.et2.getWidgetById('button[multiple]').set_disabled(false);
|
||||||
|
}
|
||||||
|
// switched to multiple user
|
||||||
|
else
|
||||||
|
{
|
||||||
|
jQuery('.emailadmin_no_single').fadeIn();
|
||||||
|
}
|
||||||
|
if (_event && _event.stopPropagation) _event.stopPropagation();
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback if user changed account selction
|
||||||
|
*
|
||||||
|
* @param {object} _event event-object or information about event
|
||||||
|
* @param {et2_baseWidget} _widget widget causing the event
|
||||||
|
*/
|
||||||
|
change_account: function(_event, _widget)
|
||||||
|
{
|
||||||
|
// todo check dirty and query user to a) save changes, b) discard changes, c) cancel selection
|
||||||
|
_widget.getInstanceManager().submit();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback if user changes notification folders: unset use-default checkbox
|
||||||
|
*
|
||||||
|
* @param {object} _event
|
||||||
|
* @param {et2_widget} _widget
|
||||||
|
*/
|
||||||
|
change_folders: function(_event, _widget)
|
||||||
|
{
|
||||||
|
var use_default = this.et2.getWidgetById('notify_use_default');
|
||||||
|
if (use_default) use_default.set_value(false);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* default onExecute for admin actions
|
||||||
|
*
|
||||||
|
* @param {object} _action
|
||||||
|
* @param {object} _senders
|
||||||
|
*/
|
||||||
|
account_edit_action: function(_action, _senders)
|
||||||
|
{
|
||||||
|
if (_action.data.url)
|
||||||
|
{
|
||||||
|
this.egw.open_link(_action.data.url, _action.data.target || '_blank', _action.data.popup);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -64,3 +64,51 @@ two weeks admin bg две седмици
|
|||||||
type of customfield admin bg Тип на полето по избор
|
type of customfield admin bg Тип на полето по избор
|
||||||
up admin bg нагоре
|
up admin bg нагоре
|
||||||
updated admin bg Актуализиран
|
updated admin bg Актуализиран
|
||||||
|
(no subject) emailadmin bg (без тема)
|
||||||
|
admin password emailadmin bg Парола на администратора
|
||||||
|
admin username emailadmin bg Потребителско име на администратора
|
||||||
|
bad login name or password. emailadmin bg Невалидно име или парола.
|
||||||
|
bad or malformed request. server responded: %s emailadmin bg Некоректна заявка. Сървърът отговори: %s
|
||||||
|
bad request: %s emailadmin bg Некоректна заявка: %s
|
||||||
|
connection dropped by imap server. emailadmin bg Връзката е прекъсната от IMAP сървъра.
|
||||||
|
continue emailadmin bg Продължаване
|
||||||
|
could not complete request. reason given: %s emailadmin bg Неуспешно изпълнение на заявката поради: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin bg Неуспешно изграждане на криптирана връзка с IMAP сървъра. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin bg CRAM-MD5 или DIGEST-MD5 изискват инсталиране на пакета Auth_SASL.
|
||||||
|
default emailadmin bg по подразбиране
|
||||||
|
displaying html messages is disabled emailadmin bg Показването на HTML съобщения е забранено!
|
||||||
|
do not validate certificate emailadmin bg не проверявай сертификати
|
||||||
|
email address emailadmin bg E-Mail адрес
|
||||||
|
encrypted connection emailadmin bg криптирана връзка
|
||||||
|
entry saved emailadmin bg Записът е запазен
|
||||||
|
error connecting to imap server. %s : %s. emailadmin bg Грешка при връзка с IMAP сървъра. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin bg Грешка при връзка с IMAP сървъра: [%s] %s.
|
||||||
|
error saving the entry!!! emailadmin bg Грешка при запис!!!
|
||||||
|
event details follow emailadmin bg Следват подробности за събитието
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin bg Ако използвате SSL или TLS, трябва да заредите OpenSSL разширението на PHP.
|
||||||
|
imap server emailadmin bg IMAP сървър
|
||||||
|
imap server closed the connection. emailadmin bg IMAP сървъра прекрати връзката.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin bg IMAP сървъра прекрати връзката с отговор: %s
|
||||||
|
mail settings admin bg Настройки на пощата
|
||||||
|
no encryption emailadmin bg без криптиране
|
||||||
|
no message returned. emailadmin bg Не са открити съобщения
|
||||||
|
no plain text part found emailadmin bg липсва текстова част
|
||||||
|
no supported imap authentication method could be found. emailadmin bg Не се поддържа зададеният метод за IMAP оторизация.
|
||||||
|
order emailadmin bg Ред
|
||||||
|
organisation emailadmin bg организация
|
||||||
|
port emailadmin bg порт
|
||||||
|
remove emailadmin bg премахване
|
||||||
|
sieve settings emailadmin bg Настройки на Sieve
|
||||||
|
smtp settings emailadmin bg SMTP настройки
|
||||||
|
templates emailadmin bg Шаблони
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin bg IMAP сървъра вероятно не поддържа избрания метод на оторизация. Моля, свържете се с Вашия системен Администратор!
|
||||||
|
this php has no imap support compiled in!! emailadmin bg PHP няма включена поддръжка за IMAP!!!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin bg За да използвате TLS е необходима версия на PHP 5.1.0 или по-висока.
|
||||||
|
unexpected response from server to authenticate command. emailadmin bg Неочакван отговор от сървъра на команда AUTHENTICATE.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin bg Неочакван отговор от сървъра на Digest-MD5.
|
||||||
|
unexpected response from server to login command. emailadmin bg Неочакван отговор от сървъра на команда LOGIN.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin bg Неизвестен отговор от IMAP сървъра: %s
|
||||||
|
use default emailadmin bg Използване на стойност по подразбиране
|
||||||
|
use smtp auth emailadmin bg използвай SMTP оторизация
|
||||||
|
users can define their own emailaccounts emailadmin bg Потребителите могат да дефинират собствени E-Mail акаунти
|
||||||
|
you have received a new message on the emailadmin bg Получено е ново съобщение на
|
||||||
|
@ -472,3 +472,81 @@ you must select a file type admin ca Heu de seleccionar un tipus d'arxiu
|
|||||||
you must select at least one group member. admin ca Heu de seleccionar un membre del grup com a mínim.
|
you must select at least one group member. admin ca Heu de seleccionar un membre del grup com a mínim.
|
||||||
you will need to remove the subcategories before you can delete this category admin ca Heu d'esborrar les subcategories abans de poder esborrar aquesta categoria !
|
you will need to remove the subcategories before you can delete this category admin ca Heu d'esborrar les subcategories abans de poder esborrar aquesta categoria !
|
||||||
your session could not be verified. admin ca La vostra sessió no s'ha pogut verificar.
|
your session could not be verified. admin ca La vostra sessió no s'ha pogut verificar.
|
||||||
|
(no subject) emailadmin ca (Sense assumpte)
|
||||||
|
add profile emailadmin ca Afegir perfil
|
||||||
|
admin dn emailadmin ca dn del administrador
|
||||||
|
admin password emailadmin ca Contrasenya del administrador
|
||||||
|
admin username emailadmin ca Mom d'usuari del administrador
|
||||||
|
advanced options emailadmin ca Opcions avançades
|
||||||
|
alternate email address emailadmin ca Adreça de correu alternativa
|
||||||
|
continue emailadmin ca Continuar
|
||||||
|
cyrus imap server emailadmin ca Servidor IMAP Cyrus
|
||||||
|
cyrus imap server administration emailadmin ca Administració del servidor IMAP Cyrus
|
||||||
|
default emailadmin ca predeterminada
|
||||||
|
deliver extern emailadmin ca entrega externa
|
||||||
|
do you really want to delete this profile emailadmin ca Realmente voleu esborrar aquest perfil?
|
||||||
|
domainname emailadmin ca Nom del domini
|
||||||
|
edit email settings emailadmin ca Editar configuració del compte
|
||||||
|
email account active emailadmin ca Compte de correu electrònic actiu
|
||||||
|
email address emailadmin ca Adreça de correu electrònic
|
||||||
|
enable cyrus imap server administration emailadmin ca activar administració del servidor Cyrus IMAP
|
||||||
|
enable sieve emailadmin ca Activar Sieve
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin ca Entreu el domini predeterminat (de usuari@domini)
|
||||||
|
entry saved emailadmin ca Entrada guardada
|
||||||
|
event details follow emailadmin ca Segueixen els detalls de la cita
|
||||||
|
forward also to emailadmin ca Reenviar també a
|
||||||
|
forward email's to emailadmin ca Reenviar correus a
|
||||||
|
forward only emailadmin ca Només reenviar
|
||||||
|
imap admin password admin ca Contrasenya de l'administrador IMAP
|
||||||
|
imap admin user admin ca Usuari administrador IMAP
|
||||||
|
imap c-client version < 2001 emailadmin ca Versió C-Client IMAP < 2001
|
||||||
|
imap server emailadmin ca Servidor IMAP
|
||||||
|
imap server hostname or ip address emailadmin ca Servidor IMAP o adreça IP
|
||||||
|
imap server logintyp emailadmin ca Tipus de sessió del servidor IMAP
|
||||||
|
imap server port emailadmin ca Port del servidor IMAP
|
||||||
|
imap/pop3 server name emailadmin ca Nom del servidor POP/IMAP
|
||||||
|
in mbyte emailadmin ca en MBytes
|
||||||
|
ldap basedn emailadmin ca basedn per a LDAP
|
||||||
|
ldap server emailadmin ca Aervidor LDAP
|
||||||
|
ldap server accounts dn emailadmin ca Comptes DN del servidor LDAP
|
||||||
|
ldap server admin dn emailadmin ca Administrador DN del servidor LDAP
|
||||||
|
ldap server admin password emailadmin ca Contrasenya del administrador del servidor LDAP
|
||||||
|
ldap server hostname or ip address emailadmin ca Nom del servidor LDAP o adreça IP
|
||||||
|
ldap settings emailadmin ca Configuració LDAP
|
||||||
|
leave empty for no quota emailadmin ca Deixar en blanc per a no posar quota
|
||||||
|
mail settings admin ca Configuració del correu
|
||||||
|
name of organisation emailadmin ca Nom de l'organització
|
||||||
|
no alternate email address emailadmin ca sense adreça de correu alternativa
|
||||||
|
no forwarding email address emailadmin ca sense adreça de correu per a reenviar
|
||||||
|
order emailadmin ca Ordre
|
||||||
|
organisation emailadmin ca Organització
|
||||||
|
pop3 server hostname or ip address emailadmin ca Nom del servidor POP3 o adreça IP
|
||||||
|
pop3 server port emailadmin ca Port del servidor POP3
|
||||||
|
postfix with ldap emailadmin ca Postfix amb LDAP
|
||||||
|
profile list emailadmin ca Llista de perfils
|
||||||
|
profile name emailadmin ca Nom del perfil
|
||||||
|
qmaildotmode emailadmin ca Modus de punt de qmail
|
||||||
|
quota settings emailadmin ca Configuració de les quotas
|
||||||
|
quota size in mbyte emailadmin ca mida de la cita en MByte
|
||||||
|
remove emailadmin ca Esborrar
|
||||||
|
select type of imap/pop3 server emailadmin ca Seleccioneu el tipus de servidor IMAP/POP3
|
||||||
|
select type of smtp server emailadmin ca Seleccioneu el tipus de servidor SMTP
|
||||||
|
sieve server hostname or ip address emailadmin ca Nom del servidor Sieve o adreça IP
|
||||||
|
sieve server port emailadmin ca Port del servidor Sieve
|
||||||
|
sieve settings emailadmin ca Configuració de Sieve
|
||||||
|
smtp server name emailadmin ca Nom del servidor SMTP
|
||||||
|
smtp settings emailadmin ca Opcions SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin ca Nom del servidor SMTP o adreça IP
|
||||||
|
smtp-server port emailadmin ca Port del servidor SMTP
|
||||||
|
standard emailadmin ca Estàndar
|
||||||
|
standard imap server emailadmin ca Servidor IMAP estàndar
|
||||||
|
standard pop3 server emailadmin ca Servidor POP3 estàndar
|
||||||
|
standard smtp-server emailadmin ca Servidor SMTP estàndar
|
||||||
|
this php has no imap support compiled in!! emailadmin ca Aquesta instal·lació de PHP no té suport IMAP!
|
||||||
|
use default emailadmin ca Utilitza el valor per defecte
|
||||||
|
use ldap defaults emailadmin ca Usar les opcions predeterminades per LDAP
|
||||||
|
use smtp auth emailadmin ca Usar identificació SMTP
|
||||||
|
use tls authentication emailadmin ca Usar identificació TLS
|
||||||
|
use tls encryption emailadmin ca Usar xifrat TLS
|
||||||
|
users can define their own emailaccounts emailadmin ca Els usuaris poden definir els seus propis comptes de correu
|
||||||
|
virtual mail manager emailadmin ca Gestor de correu virtual
|
||||||
|
@ -587,3 +587,161 @@ you need to enter install id and password! admin cs Musíte zadat instalační I
|
|||||||
you will need to remove the subcategories before you can delete this category admin cs Než smažete tuto kategorii, musíte smazat všechny podkategorie !
|
you will need to remove the subcategories before you can delete this category admin cs Než smažete tuto kategorii, musíte smazat všechny podkategorie !
|
||||||
your last submission was less then %1 days ago! admin cs Naposledy jste odeslal(a) údaje před méně jak %1 dnem/dny.
|
your last submission was less then %1 days ago! admin cs Naposledy jste odeslal(a) údaje před méně jak %1 dnem/dny.
|
||||||
your session could not be verified. admin cs Vaše relace nemohla být ověřena.
|
your session could not be verified. admin cs Vaše relace nemohla být ověřena.
|
||||||
|
(no subject) emailadmin cs (žádný předmět)
|
||||||
|
account '%1' not found !!! emailadmin cs Účet '%1' nebyl nalezen !!!
|
||||||
|
active templates emailadmin cs Aktivní šablony
|
||||||
|
add new email address: emailadmin cs Přidat novou e-mailovou adresu:
|
||||||
|
add profile emailadmin cs Přidat profil
|
||||||
|
admin dn emailadmin cs Dn (distiguished name) administrátora
|
||||||
|
admin password emailadmin cs Heslo administrátora
|
||||||
|
admin username emailadmin cs Uživatelské jméno administrátora
|
||||||
|
advanced options emailadmin cs Rozšířené volby
|
||||||
|
alternate email address emailadmin cs Alternativní e-mailová adresa
|
||||||
|
any application emailadmin cs Kterákoli aplikace
|
||||||
|
any group emailadmin cs Kterákoli skupina
|
||||||
|
any user emailadmin cs Kterýkoli uživatel
|
||||||
|
back to admin/grouplist emailadmin cs Zpět na Administrátor/Skupiny uživatelů
|
||||||
|
back to admin/userlist emailadmin cs Zpět na Administrátor/Uživatelské účty
|
||||||
|
bad login name or password. emailadmin cs Chybné přihlašovací jméno nebo heslo.
|
||||||
|
bad or malformed request. server responded: %s emailadmin cs Chybný nebo špatně fomulovaný požadavek. Server odpověděl: %s
|
||||||
|
bad request: %s emailadmin cs Chybný požadavek: %s
|
||||||
|
can be used by application emailadmin cs Může být použit aplikací
|
||||||
|
can be used by group emailadmin cs Může být použit skupinou
|
||||||
|
can be used by user emailadmin cs Může být použit uživatelem
|
||||||
|
connection dropped by imap server. emailadmin cs Připojení ukončeno IMAP serverem.
|
||||||
|
continue emailadmin cs Pokračovat
|
||||||
|
could not complete request. reason given: %s emailadmin cs Nemohu dokončit požadavek. Důvod: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin cs Nemohu otevřít zabezpečené připojení na IMAP server. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin cs CRAM-MD5 nebo DIGEST-MD5 vyžadují nainstalovaný balíček Auth_SASL.
|
||||||
|
cyrus imap server emailadmin cs Cyrus IMAP Server
|
||||||
|
cyrus imap server administration emailadmin cs Administrace Cyrus IMAP serveru
|
||||||
|
default emailadmin cs výchozí
|
||||||
|
deliver extern emailadmin cs doručit externě
|
||||||
|
displaying html messages is disabled emailadmin cs zobrazování HTML zpráv je zakázáno
|
||||||
|
do not validate certificate emailadmin cs Neověřovat certifikát
|
||||||
|
do you really want to delete this profile emailadmin cs Opravdu chcete smazat tento profil
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin cs Opravdu chcete vyresetovat filtr pro seznam profilů
|
||||||
|
domainname emailadmin cs Doménové jméno
|
||||||
|
edit email settings emailadmin cs Editovat nastavení e-mailu
|
||||||
|
email account active emailadmin cs E-mailový účet aktivní
|
||||||
|
email address emailadmin cs E-mailová adresa
|
||||||
|
email settings common cs Nastavení e-mailu
|
||||||
|
emailadmin emailadmin cs Administrátor pošty
|
||||||
|
emailadmin: group assigned profile common cs Administrátor pošty: profil přidělený skupině
|
||||||
|
emailadmin: user assigned profile common cs Administrátor pošty: profil přidělený uživateli
|
||||||
|
enable cyrus imap server administration emailadmin cs Povolit administraci Cyrus IMAP serveru
|
||||||
|
enable sieve emailadmin cs Povolit Sieve
|
||||||
|
encrypted connection emailadmin cs Šifrované připojení
|
||||||
|
encryption settings emailadmin cs Nastavení šifrování
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin cs Zadejte Vaši výchozí poštovní doménu (z: uživatel@doména)
|
||||||
|
entry saved emailadmin cs Záznam uložen
|
||||||
|
error connecting to imap server. %s : %s. emailadmin cs Chyba spojení na IMAP server. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin cs Chyba spojení na IMAP server: [%s] %s.
|
||||||
|
error saving account! emailadmin cs Chyba při ukládání účtu!
|
||||||
|
error saving the entry!!! emailadmin cs Chyba při ukládání záznamu!!!
|
||||||
|
event details follow emailadmin cs Následují detaily události
|
||||||
|
filtered by account emailadmin cs filtrováno podle účtu
|
||||||
|
filtered by group emailadmin cs filtrováno podle skupiny
|
||||||
|
forward also to emailadmin cs Přeposlat také na
|
||||||
|
forward email's to emailadmin cs Přeposílat e-maily na
|
||||||
|
forward only emailadmin cs Jen přeposlat
|
||||||
|
global options emailadmin cs Globální volby
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin cs Pokud chcete používat SSL nebo TLS, musíte mít nahráno openssl rozšíření PHP.
|
||||||
|
imap admin password admin cs Heslo IMAP administrátora
|
||||||
|
imap admin user admin cs Uživatelský účet IMAP administrátora
|
||||||
|
imap c-client version < 2001 emailadmin cs IMAP C-klient verze < 2001
|
||||||
|
imap server emailadmin cs IMAP Server
|
||||||
|
imap server closed the connection. emailadmin cs IMAP server ukončil spojení.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin cs IMAP server ukončil spojení. Server odpověděl: %s
|
||||||
|
imap server hostname or ip address emailadmin cs DNS jméno nebo IP adresa IMAP serveru
|
||||||
|
imap server logintyp emailadmin cs Typ přihlášení na IMAP server
|
||||||
|
imap server name emailadmin cs Název IMAP serveru
|
||||||
|
imap server port emailadmin cs Port IMAP serveru
|
||||||
|
imap/pop3 server name emailadmin cs Název IMAP/POP3 serveru
|
||||||
|
importance emailadmin cs Důležitost
|
||||||
|
in mbyte emailadmin cs v MBytech
|
||||||
|
inactive emailadmin cs neaktivní
|
||||||
|
ldap basedn emailadmin cs LDAP basedn
|
||||||
|
ldap server emailadmin cs LDAP server
|
||||||
|
ldap server accounts dn emailadmin cs DN (distinguished name) účtů na LDAP serveru
|
||||||
|
ldap server admin dn emailadmin cs DN (distinguished name) administrátora LDAP serveru
|
||||||
|
ldap server admin password emailadmin cs Heslo administrátora LDAP serveru
|
||||||
|
ldap server hostname or ip address emailadmin cs DNS jméno nebo IP adresa LDAP serveru
|
||||||
|
ldap settings emailadmin cs LDAP nastavení
|
||||||
|
leave empty for no quota emailadmin cs ponechte prázdné, nechcete-li kvótu
|
||||||
|
mail settings admin cs Nastavení pošty
|
||||||
|
manage stationery templates emailadmin cs Spravovat šablony dopisů
|
||||||
|
name of organisation emailadmin cs Název organizace
|
||||||
|
no alternate email address emailadmin cs bez alternativní e-mailové adresy
|
||||||
|
no encryption emailadmin cs bez šifrování
|
||||||
|
no forwarding email address emailadmin cs bez e-mailové adresy pro přeposílání
|
||||||
|
no message returned. emailadmin cs Žádná zpráva se nevrátila.
|
||||||
|
no plain text part found emailadmin cs nebyla nalezena část ve formě prostého textu
|
||||||
|
no supported imap authentication method could be found. emailadmin cs Nebyla nalezena žádná podporovaná metoda IMAP autentikace.
|
||||||
|
order emailadmin cs Pořadí
|
||||||
|
organisation emailadmin cs Organizace
|
||||||
|
plesk can't rename users --> request ignored emailadmin cs Plesk nemůže přejmenovávat uživatele --> požadavek ignorován
|
||||||
|
plesk imap server (courier) emailadmin cs Plesk IMAP server (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin cs Plesk poštovní skript '%1' nebyl nalezen !!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin cs Plesk vyžaduje, aby měla hesla nejméně 5 znaků a neobsahovala název účtu --> heslo nebylo nastaveno!!!
|
||||||
|
plesk smtp-server (qmail) emailadmin cs Plesk SMTP server (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin cs DNS jméno nebo IP adresa POP3 serveru
|
||||||
|
pop3 server port emailadmin cs Port POP3 serveru
|
||||||
|
port emailadmin cs port
|
||||||
|
postfix with ldap emailadmin cs Postfix s LDAP
|
||||||
|
profile access rights emailadmin cs přístupová práva profilu
|
||||||
|
profile is active emailadmin cs Profil je aktivní
|
||||||
|
profile list emailadmin cs Seznam profilů
|
||||||
|
profile name emailadmin cs Název profilu
|
||||||
|
qmaildotmode emailadmin cs Tečkový režim Qmail
|
||||||
|
quota settings emailadmin cs Nastavení kvóty
|
||||||
|
quota size in mbyte emailadmin cs velikost kvóty v MBytech
|
||||||
|
remove emailadmin cs Odstranit
|
||||||
|
reset filter emailadmin cs vyresetovat filtr
|
||||||
|
select type of imap server emailadmin cs Vyberte typ IMAP serveru
|
||||||
|
select type of imap/pop3 server emailadmin cs Vyberte typ IMAP/POP3 serveru
|
||||||
|
select type of smtp server emailadmin cs Vyberte typ SMTP serveru
|
||||||
|
send using this email-address emailadmin cs Odeslat s touto e-mailovou adresou
|
||||||
|
server settings emailadmin cs Nastavení serveru
|
||||||
|
sieve server hostname or ip address emailadmin cs DNS jméno nebo IP adresa Sieve serveru
|
||||||
|
sieve server port emailadmin cs Port Sieve serveru
|
||||||
|
sieve settings emailadmin cs Nastavení sieve
|
||||||
|
smtp authentication emailadmin cs SMTP autentikace
|
||||||
|
smtp options emailadmin cs Volby SMTP
|
||||||
|
smtp server name emailadmin cs Jméno SMTP serveru
|
||||||
|
smtp settings emailadmin cs Nastavení SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin cs DNS jméno nebo IP adresa SMTP serveru
|
||||||
|
smtp-server port emailadmin cs Port SMTP serveru
|
||||||
|
standard emailadmin cs Standardní
|
||||||
|
standard imap server emailadmin cs Standardní IMAP server
|
||||||
|
standard pop3 server emailadmin cs Standardní POP3 server
|
||||||
|
standard smtp-server emailadmin cs Standardní SMTP server
|
||||||
|
stationery emailadmin cs Šablony
|
||||||
|
templates emailadmin cs Šablony
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin cs Vypadá to, že IMAP server nepodporuje vybranou autentikační metodu. Zkontaktujte prosím Vašeho systémového administrátora.
|
||||||
|
the mimeparser can not parse this message. emailadmin cs Mimeparser nemůže zpracovat tuto zprávu.
|
||||||
|
this php has no imap support compiled in!! emailadmin cs Toto PHP nemá zkompilovanou podporu IMAPu.
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin cs Pro použití TLS připojení musíte provozovat verzi PHP 5.1.0 nebo vyšší.
|
||||||
|
unexpected response from server to authenticate command. emailadmin cs Neočekávaná odpověď serveru na příkaz AUTHENTICATE.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin cs Neočekávaná odpověď serveru na Digest-MD5 odpověď.
|
||||||
|
unexpected response from server to login command. emailadmin cs Neočekávaná odpověď serveru na příkaz LOGIN.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin cs Neznámá IMAP odpověď server. Odpověděl: %s
|
||||||
|
unsupported action '%1' !!! emailadmin cs Nepodporovaná akce '%1' !!!
|
||||||
|
update current email address: emailadmin cs Aktualizovat současnou e-mailovou adresu:
|
||||||
|
use default emailadmin cs Použít výchozí
|
||||||
|
use ldap defaults emailadmin cs Použít výchozí hodnoty LDAP
|
||||||
|
use predefined username and password defined below emailadmin cs Použít předdefinované uživatelské jméno a heslo uvedené níže
|
||||||
|
use smtp auth emailadmin cs Použít SMTP autentikaci
|
||||||
|
use tls authentication emailadmin cs Použít TLS autentikaci
|
||||||
|
use tls encryption emailadmin cs Použít TLS šifrování
|
||||||
|
user can edit forwarding address emailadmin cs Uživatel smí editovat adresu pro přeposílání
|
||||||
|
username (standard) emailadmin cs uživatelské jméno (standardní)
|
||||||
|
username/password defined by admin emailadmin cs Uživatelské jméno/Heslo definované administrátorem
|
||||||
|
username@domainname (virtual mail manager) emailadmin cs uživatelskéjméno@doména (Virtuální správce pošty)
|
||||||
|
users can define their own emailaccounts emailadmin cs Uživatelé smí definovat vlastní poštovní účty
|
||||||
|
users can define their own identities emailadmin cs Uživatelé smí definovat své vlastní identity
|
||||||
|
users can define their own signatures emailadmin cs Uživatelé smí definovat své vlastní podpisy
|
||||||
|
users can utilize these stationery templates emailadmin cs Uživatelé mohou využívat tyto šablony dopisů
|
||||||
|
virtual mail manager emailadmin cs Virtuální správce pošty
|
||||||
|
you have received a new message on the emailadmin cs Přišla Vám nová zpráva na
|
||||||
|
your name emailadmin cs Vaše jméno
|
||||||
|
@ -413,3 +413,78 @@ you must enter an application title. admin da Du skal indtaste en applikations t
|
|||||||
you must select a file type admin da Du skal vælge en type
|
you must select a file type admin da Du skal vælge en type
|
||||||
you will need to remove the subcategories before you can delete this category admin da Du blive nød til at fjerne underkategorierne for du kan slette denne kategori!
|
you will need to remove the subcategories before you can delete this category admin da Du blive nød til at fjerne underkategorierne for du kan slette denne kategori!
|
||||||
your session could not be verified. admin da Din session kunne ikke verificeres
|
your session could not be verified. admin da Din session kunne ikke verificeres
|
||||||
|
(no subject) emailadmin da (ingen emne)
|
||||||
|
add profile emailadmin da Tilføj Profil
|
||||||
|
admin dn emailadmin da admin dn
|
||||||
|
admin password emailadmin da admin adgangskode
|
||||||
|
admin username emailadmin da admin brugernavn
|
||||||
|
advanced options emailadmin da avanceret indstillinger
|
||||||
|
alternate email address emailadmin da alternativ e-mail adresse
|
||||||
|
cyrus imap server emailadmin da Cyrus IMAP Server
|
||||||
|
cyrus imap server administration emailadmin da Cyrus IMAP server administration
|
||||||
|
default emailadmin da standart
|
||||||
|
deliver extern emailadmin da lever ekstern
|
||||||
|
do you really want to delete this profile emailadmin da Vil du virkelig slette denne profil
|
||||||
|
domainname emailadmin da domæne navn
|
||||||
|
edit email settings emailadmin da redigere e-mail indstillingerne
|
||||||
|
email account active emailadmin da e-mail konto aktiv
|
||||||
|
email address emailadmin da e-mail adresse
|
||||||
|
enable cyrus imap server administration emailadmin da aktivere Cyrus IMAP server administration
|
||||||
|
enable sieve emailadmin da aktiver Sieve
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin da Indtast dit standart post domæne (fra: bruger@domæne)
|
||||||
|
event details follow emailadmin da Hændelses detajler følger
|
||||||
|
forward also to emailadmin da videresend også til
|
||||||
|
forward email's to emailadmin da videresend e-mails til
|
||||||
|
forward only emailadmin da videresend kun
|
||||||
|
imap admin password admin da IMAP admin adgangskode
|
||||||
|
imap admin user admin da IMAP admin bruger
|
||||||
|
imap c-client version < 2001 emailadmin da IMAP C-Klient Version < 2001
|
||||||
|
imap server emailadmin da IMAP Server
|
||||||
|
imap server hostname or ip address emailadmin da IMAP server domænenavn eller IP adresse
|
||||||
|
imap server logintyp emailadmin da IMAP server login type
|
||||||
|
imap server port emailadmin da IMAP server port
|
||||||
|
imap/pop3 server name emailadmin da IMAP/POP3 server navn
|
||||||
|
in mbyte emailadmin da i Megabytes
|
||||||
|
ldap basedn emailadmin da LDAP basedn
|
||||||
|
ldap server emailadmin da LDAP server
|
||||||
|
ldap server accounts dn emailadmin da LDAP server konto DN
|
||||||
|
ldap server admin dn emailadmin da LDAP server admin DN
|
||||||
|
ldap server admin password emailadmin da LDAP server admin adgangskode
|
||||||
|
ldap server hostname or ip address emailadmin da LDAP server domænenavn eller IP adresse
|
||||||
|
ldap settings emailadmin da LDAP indstillinger
|
||||||
|
leave empty for no quota emailadmin da efterlad tom hvis ingen citat
|
||||||
|
mail settings admin da Post indstillinger
|
||||||
|
name of organisation emailadmin da Navn på organisation
|
||||||
|
no alternate email address emailadmin da ingen alternativ e-mail adresse
|
||||||
|
no forwarding email address emailadmin da ingen viderestillet e-mail adresse
|
||||||
|
order emailadmin da Rækkefølge
|
||||||
|
organisation emailadmin da Organisation
|
||||||
|
pop3 server hostname or ip address emailadmin da POP3 server domænenavn eller IP adresse
|
||||||
|
pop3 server port emailadmin da POP server port
|
||||||
|
postfix with ldap emailadmin da Postfix med LDAP
|
||||||
|
profile list emailadmin da Profil liste
|
||||||
|
profile name emailadmin da Profil navn
|
||||||
|
qmaildotmode emailadmin da qmaildotmode
|
||||||
|
quota settings emailadmin da quota indstillinger
|
||||||
|
remove emailadmin da fjern
|
||||||
|
select type of imap/pop3 server emailadmin da Vælg type IMAP/POP3 server
|
||||||
|
select type of smtp server emailadmin da Vælg time POP3 server
|
||||||
|
sieve server hostname or ip address emailadmin da Sieve server domænenavn eller IP adresse
|
||||||
|
sieve server port emailadmin da Sieve server port
|
||||||
|
sieve settings emailadmin da Sieve indstillinger
|
||||||
|
smtp server name emailadmin da SMTP server navn
|
||||||
|
smtp settings emailadmin da SMTP indstillinger
|
||||||
|
smtp-server hostname or ip address emailadmin da SMTP server domænenavn eller IP adresse
|
||||||
|
smtp-server port emailadmin da SMTP server port
|
||||||
|
standard emailadmin da Standart
|
||||||
|
standard imap server emailadmin da Standart IMAP server
|
||||||
|
standard pop3 server emailadmin da Standart POP3 server
|
||||||
|
standard smtp-server emailadmin da Standart SMTP server
|
||||||
|
this php has no imap support compiled in!! emailadmin da Der er ikke understøttelse for IMAP i din PHP kode.
|
||||||
|
use default emailadmin da Brug standard
|
||||||
|
use ldap defaults emailadmin da brug LDAP standarter
|
||||||
|
use smtp auth emailadmin da Brug SMTP autorisation
|
||||||
|
use tls authentication emailadmin da Brug TLS autorisation
|
||||||
|
use tls encryption emailadmin da Brug TLS kryptering
|
||||||
|
users can define their own emailaccounts emailadmin da Brugere kan selv definere deres egne e-mail kontoer
|
||||||
|
virtual mail manager emailadmin da Virtuel post håndtering
|
||||||
|
@ -715,3 +715,216 @@ you need to select some users first! admin de Sie müssen zuerst einige Benutzer
|
|||||||
you will need to remove the subcategories before you can delete this category admin de Sie müssen erst die Unterkategorien löschen bevor Sie diese Kategorie löschen können!
|
you will need to remove the subcategories before you can delete this category admin de Sie müssen erst die Unterkategorien löschen bevor Sie diese Kategorie löschen können!
|
||||||
your last submission was less then %1 days ago! admin de Ihre letzte Übertragung liegt weniger als %1 Tage zurück!
|
your last submission was less then %1 days ago! admin de Ihre letzte Übertragung liegt weniger als %1 Tage zurück!
|
||||||
your session could not be verified. admin de Ihre Sitzung konnte nicht verifiziert werden.
|
your session could not be verified. admin de Ihre Sitzung konnte nicht verifiziert werden.
|
||||||
|
%1 entries deleted. emailadmin de %1 Einträge gelöscht
|
||||||
|
(imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver) emailadmin de (Die IMAP Klasse muss dieses Verfahren unterstützen indem es den entsprechenden Konfigurationswert der Instanz ausliest und als Default Quota an den IMAP Server meldet.)
|
||||||
|
(no subject) emailadmin de (Kein Betreff)
|
||||||
|
account '%1' not found !!! emailadmin de Mailkonto '%1' nicht gefunden !
|
||||||
|
account deleted. emailadmin de Mailkonto gelöscht.
|
||||||
|
account not found! common de Mailkonto nicht gefunden!
|
||||||
|
account saved. emailadmin de Mailkonto gespeichert.
|
||||||
|
active templates emailadmin de Aktive Vorlagen
|
||||||
|
add new email address: emailadmin de Neue E-Mailadresse hinzufügen
|
||||||
|
add profile emailadmin de Profil hinzufügen
|
||||||
|
admin dn emailadmin de Admin DN
|
||||||
|
admin password emailadmin de Admin Passwort
|
||||||
|
admin username emailadmin de Administrator Benutzername
|
||||||
|
advanced options emailadmin de erweiterte Einstellungen
|
||||||
|
allow users to change forwards emailadmin de Anwender dürfen Weiterleitung bearbeiten
|
||||||
|
alternate email address emailadmin de zusätzliche E-Mail-Adressen
|
||||||
|
and logged in emailadmin de und eingeloggt
|
||||||
|
any application emailadmin de jede Anwendung
|
||||||
|
any group emailadmin de jede Gruppe
|
||||||
|
any user emailadmin de jeder Benutzer
|
||||||
|
back to admin/grouplist emailadmin de Zurück zu: Admin / Gruppenverwaltung
|
||||||
|
back to admin/userlist emailadmin de Zurück zu: Admin / Benutzerverwaltung
|
||||||
|
bad login name or password. emailadmin de Falscher Benutzername oder Passwort.
|
||||||
|
bad or malformed request. server responded: %s emailadmin de Falsche oder ungültige Anfrage. Server antwortet: %s
|
||||||
|
bad request: %s emailadmin de Falsche Anfrage: %s
|
||||||
|
can be used by application emailadmin de Kann von folgender Anwendung verwendet werden
|
||||||
|
can be used by group emailadmin de Kann von folgender Gruppe verwendet werden
|
||||||
|
can be used by user emailadmin de Kann von folgendem Benutzer verwendet werden
|
||||||
|
connection dropped by imap server. emailadmin de Verbindung von IMAP-Server beendet.
|
||||||
|
connection is not secure! everyone can read eg. your credentials. emailadmin de Die Verbindung ist NICHT sicher! Jeder kann zB. Ihr Passwort lesen.
|
||||||
|
continue emailadmin de Weiter
|
||||||
|
could not append message: emailadmin de Diese Mail lässt sich nicht anzeigen
|
||||||
|
could not complete request. reason given: %s emailadmin de Konnte Anfrage nicht beenden. Grund: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin de Konnte keine sichere Verbindung zum IMAP Server aufbauen. %s: %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin de CRAM-MD5 oder DIGEST-MD5 erfordert, das das Auth_SASL Packet installiert ist.
|
||||||
|
create new account emailadmin de Neues Mailkonto erstellen
|
||||||
|
create new identity emailadmin de Neue Identität erstellen
|
||||||
|
cyrus imap server emailadmin de Cyrus IMAP-Server
|
||||||
|
cyrus imap server administration emailadmin de Cyrus IMAP-Server Administration
|
||||||
|
default emailadmin de Vorgabe
|
||||||
|
delete identity emailadmin de Identität löschen
|
||||||
|
delete this account emailadmin de Diese Konto löschen
|
||||||
|
deliver extern emailadmin de extern ausliefern
|
||||||
|
displaying html messages is disabled emailadmin de Das Anzeigen von HTML Nachrichten ist deaktiviert
|
||||||
|
displaying plain messages is disabled emailadmin de Das Anzeigen von Text Nachrichten ist deaktiviert
|
||||||
|
do not validate certificate emailadmin de Zertifikat nicht überprüfen
|
||||||
|
do you really want to delete this profile emailadmin de Wollen Sie dieses Profil wirklich löschen
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin de Möchten Sie den Filter für die Profilliste wirklich zurücksetzen?
|
||||||
|
domainname emailadmin de Domänenname
|
||||||
|
edit email settings emailadmin de E-Mail-Einstellungen
|
||||||
|
email account active emailadmin de E-Mail-Konto aktiv
|
||||||
|
email address emailadmin de E-Mail-Adresse
|
||||||
|
email settings common de E-Mail-Konto
|
||||||
|
emailadmin emailadmin de E-Mail-Admin
|
||||||
|
emailadmin: group assigned profile common de E-Mail-Admin: Vordefiniertes Gruppenprofil
|
||||||
|
emailadmin: user assigned profile common de E-Mail-Admin: Vordefiniertes Benutzerprofil
|
||||||
|
enable cyrus imap server administration emailadmin de Cyrus IMAP-Server Administration aktivieren
|
||||||
|
enable sieve emailadmin de Sieve aktivieren
|
||||||
|
encrypted connection emailadmin de verschlüsselte Verbindung
|
||||||
|
encryption settings emailadmin de Verschlüsselungseinstellungen
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin de Standard E-Mail-Domain (Von: benutzer@domain)
|
||||||
|
entry saved emailadmin de Eintrag gespeichert
|
||||||
|
error connecting to imap server. %s : %s. emailadmin de Fehler beim Verbinden mit dem IMAP Server. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin de Fehler beim Verbinden mit dem IMAP Server. [%s] %s.
|
||||||
|
error deleting entry! emailadmin de Fehler beim Löschen des Eintrags
|
||||||
|
error saving account! emailadmin de Fehler beim Speichern des Mailkontos!
|
||||||
|
error saving the entry!!! emailadmin de Fehler beim Speichern !
|
||||||
|
error, no username! emailadmin de Fehler, kein Benutzername!
|
||||||
|
event details follow emailadmin de Hier die Details des Termins
|
||||||
|
failed to delete account! emailadmin de Fehler beim Löschen des Mailkontos!
|
||||||
|
file rejected, no %2. is:%1 emailadmin de Datei wurde abgewiesen, kein %2. ist:%1
|
||||||
|
filtered by account emailadmin de Suche nach Benutzerprofilen
|
||||||
|
filtered by group emailadmin de Suche nach Gruppenprofilen
|
||||||
|
folder acl emailadmin de Zugriffsrechte
|
||||||
|
forward also to emailadmin de zusätzlich weiterleiten
|
||||||
|
forward email's to emailadmin de E-Mails weiterleiten an
|
||||||
|
forward only emailadmin de nur weiterleiten
|
||||||
|
forward only disables imap mailbox / storing of mails and just forwards them to given address. emailadmin de Nur weiterleiten schaltet die IMAP Mailbox / das Speichern der Mails aus und leitet diese an die angegebene Adresse weiter.
|
||||||
|
global options emailadmin de Globale Optionen
|
||||||
|
hostname or ip emailadmin de Hostname oder IP
|
||||||
|
how username get constructed emailadmin de Wie wird der Benutzername gebildet
|
||||||
|
identity deleted emailadmin de Identität gelöscht.
|
||||||
|
identity saved. emailadmin de Identität gespeichert.
|
||||||
|
if different from email address emailadmin de falls unterschiedlich zu E-Mail-Adresse
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin de Wenn Sie SSL oder TLS benutzen, müssen Sie die openssl PHP Erweiterung geladen haben.
|
||||||
|
if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that) emailadmin de Wenn Sie als SIEVE Server Port 5190 eintragen, wird für die Kommunikation mit dem SIEVE-Server eine SSL-Verbindung verwendet (der Server muss das natürlich unterstützen)
|
||||||
|
imap admin password admin de IMAP Administrator Passwort
|
||||||
|
imap admin user admin de IMAP Administrator Benutzer
|
||||||
|
imap c-client version < 2001 emailadmin de IMAP C-Client Version < 2001
|
||||||
|
imap server emailadmin de IMAP Server
|
||||||
|
imap server closed the connection. emailadmin de IMAP Server hat die Verbindung beendet.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin de IMAP Server hat die Verbindung beendet. Server Antwort: %s
|
||||||
|
imap server hostname or ip address emailadmin de IMAP-Server Hostname oder IP-Adresse
|
||||||
|
imap server logintyp emailadmin de IMAP-Server Loginverfahren
|
||||||
|
imap server name emailadmin de IMAP-Server Name
|
||||||
|
imap server port emailadmin de IMAP-Server Port
|
||||||
|
imap/pop3 server name emailadmin de IMAP/POP3-Server Name
|
||||||
|
importance emailadmin de wichtig
|
||||||
|
in mbyte emailadmin de in MByte
|
||||||
|
inactive emailadmin de inaktiv
|
||||||
|
ldap basedn emailadmin de LDAP BaseDN
|
||||||
|
ldap server emailadmin de LDAP Server
|
||||||
|
ldap server accounts dn emailadmin de LDAP-Server Benutzerkonten DN
|
||||||
|
ldap server admin dn emailadmin de LDAP-Server Administrator DN
|
||||||
|
ldap server admin password emailadmin de LDAP-Server Administrator-Passwort
|
||||||
|
ldap server hostname or ip address emailadmin de LDAP-Server Hostname oder IP-Adresse
|
||||||
|
ldap settings emailadmin de LDAP-Einstellungen
|
||||||
|
leave empty for no quota emailadmin de leer lassen um Quota zu deaktivieren
|
||||||
|
mail settings admin de E-Mail-Einstellungen
|
||||||
|
manage stationery templates emailadmin de Briefpapiervorlagen verwalten
|
||||||
|
manual entry emailadmin de Manuelle Eingabe
|
||||||
|
mb used emailadmin de MB belegt
|
||||||
|
name of organisation emailadmin de Name der Organisation
|
||||||
|
no alternate email address emailadmin de keine zusätzlichen E-Mail-Adressen
|
||||||
|
no encryption emailadmin de keine Verschlüsselung
|
||||||
|
no forwarding email address emailadmin de keine Weiterleitungsadresse definiert
|
||||||
|
no message returned. emailadmin de Keine Nachricht zurückgeliefert.
|
||||||
|
no plain text part found emailadmin de Kein Nachrichten Text-Teil gefunden
|
||||||
|
no sieve support detected, either fix configuration manually or leave it switched off. emailadmin de Keine Sieve-Unterstützung gefunden. Konfiguration entweder manuell anpassen oder Sieve ausgeschalten lassen.
|
||||||
|
no supported imap authentication method could be found. emailadmin de Keine unterstützte IMAP-Authentifizierungsmethode gefunden.
|
||||||
|
order emailadmin de Reihenfolge
|
||||||
|
organisation emailadmin de Organisation
|
||||||
|
plesk can't rename users --> request ignored emailadmin de Plesk kann keine Benutzer umbenennen --> Anforderung ignoriert
|
||||||
|
plesk imap server (courier) emailadmin de Plesk IMAP Server (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin de Plesk Mail Skript '%1' nicht gefunden !!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin de Plesk verlangt, dass Passwörter mindestens 5 Zeichen lang sind und nicht den Benutzernamen enthalten --> Passwort nicht gesetzt!!!
|
||||||
|
plesk smtp-server (qmail) emailadmin de Plesk SMTP-Server (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin de POP3-Server Hostname oder IP-Adresse
|
||||||
|
pop3 server port emailadmin de POP3-Server Port
|
||||||
|
port emailadmin de Port
|
||||||
|
postfix with ldap emailadmin de Postfix mit LDAP
|
||||||
|
processing of file %1 failed. failed to meet basic restrictions. emailadmin de Die Verarbeitung der Datei %1 fehlgeschlagen. Die Basis Voraussetzungen wurden nicht erfülltt
|
||||||
|
profile access rights emailadmin de Profilzugriffsrechte
|
||||||
|
profile is active emailadmin de Profil ist aktiv
|
||||||
|
profile list emailadmin de Profilliste
|
||||||
|
profile name emailadmin de Profilname
|
||||||
|
qmaildotmode emailadmin de qmaildotmode
|
||||||
|
quota settings emailadmin de Quota Einstellungen
|
||||||
|
quota size in mbyte emailadmin de Quota Größe in MByte
|
||||||
|
relay access checked emailadmin de nicht angemeldetes Senden überprüft
|
||||||
|
remove emailadmin de Entfernen
|
||||||
|
required pear class mail/mimedecode.php not found. emailadmin de Die benötigte Classe PEAR (Mail/mimeDecode.php) wurde nicht gefunden.
|
||||||
|
reset filter emailadmin de Filter zurücksetzen
|
||||||
|
save of message %1 failed. could not save message to folder %2 due to: %3 emailadmin de Das Speichern der Nachricht %1 ist fehlgeschlagen. Die Nachricht konnte nicht in das Verzeichniss %2 bzw.: %3
|
||||||
|
saving of message %1 failed. destination folder %2 does not exist. emailadmin de Das Speichern der Nachricht %1 ist fehlgeschlagen. Der Ordner %2 ist nicht vorhanden.
|
||||||
|
secure connection emailadmin de Sichere Verbindung
|
||||||
|
select type of imap server emailadmin de IMAP-Server Typ auswählen
|
||||||
|
select type of imap/pop3 server emailadmin de IMAP/POP3-Server Typ auswählen
|
||||||
|
select type of smtp server emailadmin de SMTP-Server Typ auswählen
|
||||||
|
send using this email-address emailadmin de zum Versenden wird diese E-Mail Adresse benutzt
|
||||||
|
server settings emailadmin de Server-Einstellungen
|
||||||
|
sieve server hostname or ip address emailadmin de Sieve-Server Hostname oder IP-Adresse
|
||||||
|
sieve server port emailadmin de Sieve-Server Port
|
||||||
|
sieve settings emailadmin de Sieve Einstellungen
|
||||||
|
skip imap emailadmin de IMAP auslassen
|
||||||
|
skipping imap configuration! emailadmin de IMAP Konfiguration ausgelassen!
|
||||||
|
smtp authentication emailadmin de SMTP Anmeldung
|
||||||
|
smtp options emailadmin de SMTP Optionen
|
||||||
|
smtp server emailadmin de SMTP Server
|
||||||
|
smtp server name emailadmin de SMTP Server Name
|
||||||
|
smtp settings emailadmin de SMTP Einstellungen
|
||||||
|
smtp-server hostname or ip address emailadmin de SMTP Server Hostname oder IP-Adresse
|
||||||
|
smtp-server port emailadmin de SMTP Server Port
|
||||||
|
standard emailadmin de Vorgabe
|
||||||
|
standard identity emailadmin de Standard Identität
|
||||||
|
standard imap server emailadmin de Standard IMAP-Server
|
||||||
|
standard pop3 server emailadmin de Standard POP3-Server
|
||||||
|
standard smtp-server emailadmin de Standard SMTP-Server
|
||||||
|
starts with emailadmin de startet mit
|
||||||
|
stationery emailadmin de Briefpapier
|
||||||
|
successful connected to %1 server%2. emailadmin de Erfolgreich zu %1 Server verbunden%2.
|
||||||
|
switch back to standard identity to save account. emailadmin de Kehren Sie zur Standard-Identität zurück um das Konto zu speichern.
|
||||||
|
switch back to standard identity to save other account data. emailadmin de Kehren Sie zur Standard-Identität zurück um andere Kontendaten zu speichern.
|
||||||
|
templates emailadmin de Templates
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin de Der IMAP Server scheint die eingestellte Authentifizierungsmethode nicht zu unterstützen. Bitte fragen Sie Ihren Systemadministrator.
|
||||||
|
the mimeparser can not parse this message. emailadmin de Der Mimiparser versteht diese Nachricht nicht
|
||||||
|
this is not a personal mail account!\n\naccount will be deleted for all users!\n\nare you really sure you want to do that? emailadmin de Das ist KEIN persönliches Mailkonto!\n\nDas Konto wird für ALLE Benutzer gelöscht!\n\nSind Sie wirklich sicher, dass Sie das wollen?
|
||||||
|
this php has no imap support compiled in!! emailadmin de Dieses PHP hat keine IMAP Unterstützung!!!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin de Um eine TLS Verbindung zu verwenden, benötigen Sie PHP 5.1.0 oder aktueller.
|
||||||
|
unexpected response from server to authenticate command. emailadmin de Unerwartete Antwort des Servers auf das AUTHENTICATE Kommando.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin de Unerwartete Antwort des Servers auf die Digest-MD5 Antwort.
|
||||||
|
unexpected response from server to login command. emailadmin de Unerwartete Antwort des Servers auf das LOGIN Kommando.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin de Unbekannte IMAP Antwort vom Server. Server antwortet: %s
|
||||||
|
unsupported action '%1' !!! emailadmin de Nicht unterstützte Aktion '%1' !!!
|
||||||
|
update current email address: emailadmin de Aktualisiere aktuelle E-Mailadresse
|
||||||
|
use default emailadmin de Vorgabe verwenden
|
||||||
|
use ldap defaults emailadmin de LDAP Standardeinstellungen benutzen
|
||||||
|
use predefined username and password defined below emailadmin de Verwende den unten vordefinierten Benutzernamen und Passwort
|
||||||
|
use smtp auth emailadmin de SMTP Authentifizierung benutzen
|
||||||
|
use tls authentication emailadmin de TLS Authentifizierung benutzen
|
||||||
|
use tls encryption emailadmin de TLS Verschlüsselung benutzen
|
||||||
|
use users email-address (as seen in useraccount) emailadmin de Benutzt E-Mail Adresse des Benutzers (Die unter seinem Mailkonto angezeigt wird)
|
||||||
|
user can edit forwarding address emailadmin de Anwender können ihre Weiterleitungsadresse bearbeiten
|
||||||
|
userid@domain eg. u1234@domain emailadmin de UserId@domain z.B. u1234@domain
|
||||||
|
username (standard) emailadmin de Benutzername (Standard)
|
||||||
|
username specified below for all emailadmin de Unter angegebener Benutzername für alle
|
||||||
|
username/password defined by admin emailadmin de Benutzername / Passwort vordefiniert
|
||||||
|
username@domainname (virtual mail manager) emailadmin de Benutzername@Domänenname (Virtual MAIL ManaGeR)
|
||||||
|
users can define their own emailaccounts emailadmin de Anwender können ihre eigenen Konten definieren
|
||||||
|
users can define their own identities emailadmin de Anwender können ihre eigenen Identitäten definieren
|
||||||
|
users can define their own signatures emailadmin de Anwender können ihre eigenen Signaturen definieren
|
||||||
|
users can utilize these stationery templates emailadmin de Benutzer können diese Briefpapiervorlagen verwenden
|
||||||
|
using data from mozilla ispdb for provider %1 emailadmin de Benutzer Mozilla ISPDB für Provider %1
|
||||||
|
vacation messages with start- and end-date require an admin account to be set emailadmin de Abwesenheitsnotizen mit Start- und Enddatum benötigen einen gesetzten Administrator Benutzer!
|
||||||
|
vacation notice emailadmin de Abwesenheitsnotiz
|
||||||
|
virtual mail manager emailadmin de Virtual MAIL ManaGeR
|
||||||
|
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin de Ja, die Daten darunter nur für Alarme und Benachrichtigungen verwenden, ansonsten die Daten des aktiven Benutzers.
|
||||||
|
yes, use credentials of current user or if given credentials below emailadmin de Ja, benutze Daten des aktuellen Benutzers oder wenn angegeben die Daten darunter
|
||||||
|
you can use wizard to fix account settings or delete account. emailadmin de Sie können jetzt den Wizard verwenden um die Konteneinstellungen zu ändern oder das Konto löschen.
|
||||||
|
you have received a new message on the emailadmin de Sie haben eine neue Nachricht erhalten.
|
||||||
|
you need to specify a forwarding address, when checking "%1"! emailadmin de Sie müssen eine Weiterleitungsadresse angeben, wenn "%1" abgehackt ist!
|
||||||
|
your message to %1 was displayed. emailadmin de Ihre Nachricht %1 wurde angezeigt
|
||||||
|
your name emailadmin de Ihr Name
|
||||||
|
@ -459,3 +459,58 @@ you must select a file type admin el Πρέπει να επιλέξετε ένα
|
|||||||
you must select at least one group member. admin el Πρέπει να επιλέξετε τουλάχιστον ένα μέλος ομάδας
|
you must select at least one group member. admin el Πρέπει να επιλέξετε τουλάχιστον ένα μέλος ομάδας
|
||||||
you will need to remove the subcategories before you can delete this category admin el Θα πρέπει να διαγραφούν οι υποκατηγορίες πριν διαγράψετε αυτή την κατηγορία !
|
you will need to remove the subcategories before you can delete this category admin el Θα πρέπει να διαγραφούν οι υποκατηγορίες πριν διαγράψετε αυτή την κατηγορία !
|
||||||
your session could not be verified. admin el Η περίοδος εργασίας δεν μπόρεσε να επαληθευθεί
|
your session could not be verified. admin el Η περίοδος εργασίας δεν μπόρεσε να επαληθευθεί
|
||||||
|
(no subject) emailadmin el (κανένα θέμα)
|
||||||
|
advanced options emailadmin el επιλογές για προχωρημένους
|
||||||
|
alternate email address emailadmin el εναλλακτική διεύθυνση email
|
||||||
|
bad login name or password. emailadmin el Λάθος όνομα ή κωδικός πρόσβασης
|
||||||
|
bad request: %s emailadmin el Άκυρη απαίτηση: %
|
||||||
|
connection dropped by imap server. emailadmin el Έπεσε η σύνδεση από τον IMAP server
|
||||||
|
could not complete request. reason given: %s emailadmin el Δεν ολοκληρώθηκε το αίτημα. Αιτία: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin el Δεν έγινε ασφαλής σύνδεση με τον IMAP server. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin el CRAM-MD5 ή DIGEST-MD5 απαιτεί το Auth_SASL πακέτο να εγκατασταθεί.
|
||||||
|
default emailadmin el προκαθορισμένο
|
||||||
|
deliver extern emailadmin el παράδοση εξωτερ
|
||||||
|
displaying html messages is disabled emailadmin el η προβολή των html μηνυμάτων είναι απενεργοποιημένη
|
||||||
|
do not validate certificate emailadmin el μην επικυρώνετε το πιστοποιητικό
|
||||||
|
edit email settings emailadmin el επεξεργασία ρυθμίσεων email
|
||||||
|
email account active emailadmin el ενεργός κατάλογος email
|
||||||
|
email address emailadmin el διεύθυνση email
|
||||||
|
encrypted connection emailadmin el αποκρυπτογραφημένη σύνδεση
|
||||||
|
error connecting to imap server. %s : %s. emailadmin el Σφάλμα κατά τη σύνδεση με τον IMAP server. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin el Σφάλμα κατά τη σύνδεση με τον IMAP server. [%s] : %s.
|
||||||
|
event details follow emailadmin el Ακολουθούν λεπτομέρειες γεγονότων
|
||||||
|
forward also to emailadmin el προώθηση επίσης στο
|
||||||
|
forward only emailadmin el μόνο προώθηση
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin el Αν χρησιμοποιείται SSL ή TLS, πρέπει να έχετε την PHP openssl επέκταση φορτωμένη.
|
||||||
|
imap server emailadmin el IMAP Server
|
||||||
|
imap server closed the connection. emailadmin el Ο IMAP Server έκλεισε τη σύνδεση
|
||||||
|
imap server closed the connection. server responded: %s emailadmin el Ο IMAP Server έκλεισε τη σύνδεση. Ο Server απάντησε: %s
|
||||||
|
in mbyte emailadmin el σε MByte
|
||||||
|
leave empty for no quota emailadmin el να μείνει κενό για μη ποσοστόσεις
|
||||||
|
mail settings admin el Ρυθμίσεις μηνυμάτων
|
||||||
|
no alternate email address emailadmin el δεν υπάρχει εναλλακτική διεύθυνση email
|
||||||
|
no encryption emailadmin el Καμία κρυπτογράφηση
|
||||||
|
no message returned. emailadmin el Δεν επεστράφη κάποιο μήνυμα.
|
||||||
|
no plain text part found emailadmin el δεν βρέθηκε μέρος αποκρυπτογραφημένου κειμένου
|
||||||
|
no supported imap authentication method could be found. emailadmin el Δεν βρέθηκε καμία υποστηριζόμενη IMAP επικυρωμένη μέθοδος.
|
||||||
|
order emailadmin el Ταξινόμηση
|
||||||
|
organisation emailadmin el οργανισμός
|
||||||
|
port emailadmin el θύρα
|
||||||
|
quota settings emailadmin el ρυθμίσεις ποσοστών
|
||||||
|
quota size in mbyte emailadmin el μέγεθος ποσοστών σε MByte
|
||||||
|
remove emailadmin el αφαίρεση
|
||||||
|
sieve settings emailadmin el Ρυθμίσεις Sieve
|
||||||
|
smtp settings emailadmin el Ρυθμίσεις SMTP
|
||||||
|
standard emailadmin el συνήθης
|
||||||
|
standard imap server emailadmin el συνήθης IMAP server
|
||||||
|
standard pop3 server emailadmin el συνήθης POP3 server
|
||||||
|
standard smtp-server emailadmin el συνήθης SMTP-server
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin el Ο IMAP server δεν υποστηρίζει την επιλεγμένη μέθοδο αυθεντικότητας.Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
|
||||||
|
this php has no imap support compiled in!! emailadmin el Αυτό το PHP δεν έχει καθόλου IMAP υποστήριξη μεταφρασμένη!!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin el Για τη χρησιμοποίηση TLS σύνδεσης, πρέπει να έχετε PHP 5.1.0 ή υψηλότερη έκδοση.
|
||||||
|
unexpected response from server to authenticate command. emailadmin el Απρόσμενη απάντηση από τον server στην ΕΞΑΚΡΙΒΩΣΗ ΓΝΗΣΙΟΤΗΤΑΣ εντολής.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin el Απρόσμενη απάντηση από τον server στην Digest-MD5 απάντηση.
|
||||||
|
unexpected response from server to login command. emailadmin el Απρόσμενη απάντηση από τον server στην εντολή ΕΙΣΟΔΟΥ
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin el Άγνωστη IMAP απάντηση από τον server.Απάντηση Server:%s
|
||||||
|
use smtp auth emailadmin el Χρήση SMTP αυθ
|
||||||
|
users can define their own emailaccounts emailadmin el Οι χρήστες μπορούν να ορίσουν τους δικούς τους email λογαριασμούς
|
||||||
|
@ -715,3 +715,216 @@ you need to select some users first! admin en You need to select some users firs
|
|||||||
you will need to remove the subcategories before you can delete this category admin en Remove the sub categories before deleting this category!
|
you will need to remove the subcategories before you can delete this category admin en Remove the sub categories before deleting this category!
|
||||||
your last submission was less then %1 days ago! admin en Your last submission was less than %1 days ago!
|
your last submission was less then %1 days ago! admin en Your last submission was less than %1 days ago!
|
||||||
your session could not be verified. admin en Your session could not be verified.
|
your session could not be verified. admin en Your session could not be verified.
|
||||||
|
%1 entries deleted. emailadmin en %1 entries deleted.
|
||||||
|
(imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver) emailadmin en (imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver)
|
||||||
|
(no subject) emailadmin en (no subject)
|
||||||
|
account '%1' not found !!! emailadmin en Account '%1' not found!
|
||||||
|
account deleted. emailadmin en Account deleted.
|
||||||
|
account not found! common en Account not found!
|
||||||
|
account saved. emailadmin en Account saved.
|
||||||
|
active templates emailadmin en Active templates
|
||||||
|
add new email address: emailadmin en Add new email address:
|
||||||
|
add profile emailadmin en Add profile
|
||||||
|
admin dn emailadmin en Admin dn
|
||||||
|
admin password emailadmin en Admin password
|
||||||
|
admin username emailadmin en Admin user name
|
||||||
|
advanced options emailadmin en Advanced options
|
||||||
|
allow users to change forwards emailadmin en Allow users to change forwards
|
||||||
|
alternate email address emailadmin en Alternate email address
|
||||||
|
and logged in emailadmin en and logged in
|
||||||
|
any application emailadmin en Any application
|
||||||
|
any group emailadmin en Any group
|
||||||
|
any user emailadmin en Any user
|
||||||
|
back to admin/grouplist emailadmin en Back to Admin / Group list
|
||||||
|
back to admin/userlist emailadmin en Back to Admin / User list
|
||||||
|
bad login name or password. emailadmin en Bad login name or password.
|
||||||
|
bad or malformed request. server responded: %s emailadmin en Bad or malformed request. %s
|
||||||
|
bad request: %s emailadmin en Bad request: %s
|
||||||
|
can be used by application emailadmin en Can be used by application
|
||||||
|
can be used by group emailadmin en Can be used by group
|
||||||
|
can be used by user emailadmin en Can be used by user
|
||||||
|
connection dropped by imap server. emailadmin en Connection dropped by IMAP server.
|
||||||
|
connection is not secure! everyone can read eg. your credentials. emailadmin en Connection is NOT secure! Everyone can read eg. your credentials.
|
||||||
|
continue emailadmin en Continue
|
||||||
|
could not append message: emailadmin en Could not append Message:
|
||||||
|
could not complete request. reason given: %s emailadmin en Could not complete request. %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin en Could not open secure connection to the IMAP server. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin en CRAM-MD5 or DIGEST-MD5 requires the Auth_SASL package to be installed.
|
||||||
|
create new account emailadmin en Create new account
|
||||||
|
create new identity emailadmin en Create new identity
|
||||||
|
cyrus imap server emailadmin en Cyrus IMAP server
|
||||||
|
cyrus imap server administration emailadmin en Cyrus IMAP server administration
|
||||||
|
default emailadmin en Default
|
||||||
|
delete identity emailadmin en Delete identity
|
||||||
|
delete this account emailadmin en Delete this account
|
||||||
|
deliver extern emailadmin en Deliver extern
|
||||||
|
displaying html messages is disabled emailadmin en displaying html messages is disabled
|
||||||
|
displaying plain messages is disabled emailadmin en displaying plain messages is disabled
|
||||||
|
do not validate certificate emailadmin en Do not validate certificate
|
||||||
|
do you really want to delete this profile emailadmin en Do you really want to delete this profile?
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin en Do you really want to reset the filter for the profile listing?
|
||||||
|
domainname emailadmin en Domain name
|
||||||
|
edit email settings emailadmin en Edit email settings
|
||||||
|
email account active emailadmin en Email account active
|
||||||
|
email address emailadmin en Email address
|
||||||
|
email settings common en Email settings
|
||||||
|
emailadmin emailadmin en eMailAdmin
|
||||||
|
emailadmin: group assigned profile common en eMailAdmin: Group assigned profile
|
||||||
|
emailadmin: user assigned profile common en eMailAdmin: User assigned profile
|
||||||
|
enable cyrus imap server administration emailadmin en Enable Cyrus IMAP server administration
|
||||||
|
enable sieve emailadmin en Enable Sieve
|
||||||
|
encrypted connection emailadmin en Encrypted connection
|
||||||
|
encryption settings emailadmin en Encryption settings
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin en Enter your default mail domain from: user@domain
|
||||||
|
entry saved emailadmin en Entry saved
|
||||||
|
error connecting to imap server. %s : %s. emailadmin en Error connecting to IMAP server. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin en Error connecting to IMAP server: [%s] %s.
|
||||||
|
error deleting entry! emailadmin en Error deleting entry!
|
||||||
|
error saving account! emailadmin en Error saving account!
|
||||||
|
error saving the entry!!! emailadmin en Error saving the entry!
|
||||||
|
error, no username! emailadmin en Error, no username!
|
||||||
|
event details follow emailadmin en Event Details follow
|
||||||
|
failed to delete account! emailadmin en Failed to delete account!
|
||||||
|
file rejected, no %2. is:%1 emailadmin en File rejected, no %2. Is:%1
|
||||||
|
filtered by account emailadmin en Filtered by account
|
||||||
|
filtered by group emailadmin en Filtered by group
|
||||||
|
folder acl emailadmin en Folder ACL
|
||||||
|
forward also to emailadmin en Forward also to
|
||||||
|
forward email's to emailadmin en Forward email's to
|
||||||
|
forward only emailadmin en Forward only
|
||||||
|
forward only disables imap mailbox / storing of mails and just forwards them to given address. emailadmin en Forward only disables IMAP mailbox / storing of mails and just forwards them to given address.
|
||||||
|
global options emailadmin en Global options
|
||||||
|
hostname or ip emailadmin en Hostname or IP
|
||||||
|
how username get constructed emailadmin en How username get constructed
|
||||||
|
identity deleted emailadmin en Identity deleted
|
||||||
|
identity saved. emailadmin en Identity saved.
|
||||||
|
if different from email address emailadmin en if different from EMail address
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin en If using SSL or TLS, you must have the PHP openssl extension loaded.
|
||||||
|
if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that) emailadmin en if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that)
|
||||||
|
imap admin password admin en IMAP admin password
|
||||||
|
imap admin user admin en IMAP admin user
|
||||||
|
imap c-client version < 2001 emailadmin en IMAP C-Client Version < 2001
|
||||||
|
imap server emailadmin en IMAP server
|
||||||
|
imap server closed the connection. emailadmin en IMAP server closed the connection.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin en IMAP Server closed the connection. Server Responded: %s
|
||||||
|
imap server hostname or ip address emailadmin en IMAP server hostname or ip address
|
||||||
|
imap server logintyp emailadmin en IMAP server login type
|
||||||
|
imap server name emailadmin en IMAP server name
|
||||||
|
imap server port emailadmin en IMAP server port
|
||||||
|
imap/pop3 server name emailadmin en IMAP/POP3 server name
|
||||||
|
importance emailadmin en importance
|
||||||
|
in mbyte emailadmin en in MByte
|
||||||
|
inactive emailadmin en Inactive
|
||||||
|
ldap basedn emailadmin en LDAP basedn
|
||||||
|
ldap server emailadmin en LDAP server
|
||||||
|
ldap server accounts dn emailadmin en LDAP server accounts DN
|
||||||
|
ldap server admin dn emailadmin en LDAP server admin DN
|
||||||
|
ldap server admin password emailadmin en LDAP server admin password
|
||||||
|
ldap server hostname or ip address emailadmin en LDAP server host name or IP address
|
||||||
|
ldap settings emailadmin en LDAP settings
|
||||||
|
leave empty for no quota emailadmin en Leave empty for no quota
|
||||||
|
mail settings admin en Mail settings
|
||||||
|
manage stationery templates emailadmin en Manage stationery templates
|
||||||
|
manual entry emailadmin en Manual entry
|
||||||
|
mb used emailadmin en MB used
|
||||||
|
name of organisation emailadmin en Name of organization
|
||||||
|
no alternate email address emailadmin en No alternate email address
|
||||||
|
no encryption emailadmin en No encryption
|
||||||
|
no forwarding email address emailadmin en No forwarding email address
|
||||||
|
no message returned. emailadmin en No message returned
|
||||||
|
no plain text part found emailadmin en no plain text part found
|
||||||
|
no sieve support detected, either fix configuration manually or leave it switched off. emailadmin en No sieve support detected, either fix configuration manually or leave it switched off.
|
||||||
|
no supported imap authentication method could be found. emailadmin en No supported IMAP authentication method could be found.
|
||||||
|
order emailadmin en Order
|
||||||
|
organisation emailadmin en Organisation
|
||||||
|
plesk can't rename users --> request ignored emailadmin en Plesk can't rename users --> request ignored
|
||||||
|
plesk imap server (courier) emailadmin en Plesk IMAP Server (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin en Plesk mail script '%1' not found!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin en Plesk requires passwords to have at least 5 characters and not contain the account name --> password NOT set!
|
||||||
|
plesk smtp-server (qmail) emailadmin en Plesk SMTP-Server (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin en POP3 server hostname or IP address
|
||||||
|
pop3 server port emailadmin en POP3 server port
|
||||||
|
port emailadmin en Port
|
||||||
|
postfix with ldap emailadmin en Postfix with LDAP
|
||||||
|
processing of file %1 failed. failed to meet basic restrictions. emailadmin en Processing of file %1 failed. Failed to meet basic restrictions.
|
||||||
|
profile access rights emailadmin en Profile access rights
|
||||||
|
profile is active emailadmin en Profile is active
|
||||||
|
profile list emailadmin en Profile list
|
||||||
|
profile name emailadmin en Profile name
|
||||||
|
qmaildotmode emailadmin en qmaildotmode
|
||||||
|
quota settings emailadmin en Quota settings
|
||||||
|
quota size in mbyte emailadmin en Quota size in MByte
|
||||||
|
relay access checked emailadmin en Relay access checked
|
||||||
|
remove emailadmin en Remove
|
||||||
|
required pear class mail/mimedecode.php not found. emailadmin en Required PEAR class Mail/mimeDecode.php not found.
|
||||||
|
reset filter emailadmin en Reset filter
|
||||||
|
save of message %1 failed. could not save message to folder %2 due to: %3 emailadmin en Save of message %1 failed. Could not save message to folder %2 due to: %3
|
||||||
|
saving of message %1 failed. destination folder %2 does not exist. emailadmin en Saving of message %1 failed. Destination Folder %2 does not exist.
|
||||||
|
secure connection emailadmin en Secure connection
|
||||||
|
select type of imap server emailadmin en Select type of IMAP server
|
||||||
|
select type of imap/pop3 server emailadmin en Select type of IMAP/POP3 server
|
||||||
|
select type of smtp server emailadmin en Select type of SMTP server
|
||||||
|
send using this email-address emailadmin en Send using this email address
|
||||||
|
server settings emailadmin en Server settings
|
||||||
|
sieve server hostname or ip address emailadmin en Sieve server hostname or IP address
|
||||||
|
sieve server port emailadmin en Sieve server port
|
||||||
|
sieve settings emailadmin en Sieve settings
|
||||||
|
skip imap emailadmin en Skip IMAP
|
||||||
|
skipping imap configuration! emailadmin en Skipping IMAP configuration!
|
||||||
|
smtp authentication emailadmin en SMTP authentication
|
||||||
|
smtp options emailadmin en SMTP options
|
||||||
|
smtp server emailadmin en SMTP server
|
||||||
|
smtp server name emailadmin en SMTP server name
|
||||||
|
smtp settings emailadmin en SMTP settings
|
||||||
|
smtp-server hostname or ip address emailadmin en SMTP server hostname or IP address
|
||||||
|
smtp-server port emailadmin en SMTP server port
|
||||||
|
standard emailadmin en Standard
|
||||||
|
standard identity emailadmin en Standard identity
|
||||||
|
standard imap server emailadmin en Standard IMAP server
|
||||||
|
standard pop3 server emailadmin en Standard POP3 server
|
||||||
|
standard smtp-server emailadmin en Standard SMTP server
|
||||||
|
starts with emailadmin en Starts with
|
||||||
|
stationery emailadmin en Stationery
|
||||||
|
successful connected to %1 server%2. emailadmin en Successful connected to %1 server%2.
|
||||||
|
switch back to standard identity to save account. emailadmin en Switch back to standard identity to save account.
|
||||||
|
switch back to standard identity to save other account data. emailadmin en Switch back to standard identity to save other account data.
|
||||||
|
templates emailadmin en Templates
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin en The IMAP server does not appear to support the authentication method selected. Contact your system administrator.
|
||||||
|
the mimeparser can not parse this message. emailadmin en The mimeparser can not parse this message.
|
||||||
|
this is not a personal mail account!\n\naccount will be deleted for all users!\n\nare you really sure you want to do that? emailadmin en This is NOT a personal mail account!\n\nAccount will be deleted for ALL users!\n\nAre you really sure you want to do that?
|
||||||
|
this php has no imap support compiled in!! emailadmin en This PHP has no IMAP support compiled in!!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin en To use a TLS connection, you must be running a version of PHP 5.1.0 or higher.
|
||||||
|
unexpected response from server to authenticate command. emailadmin en Unexpected response from server to AUTHENTICATE command.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin en Unexpected response from server to Digest-MD5 response.
|
||||||
|
unexpected response from server to login command. emailadmin en Unexpected response from server to LOGIN command.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin en Unknown IMAP response from the server. %s
|
||||||
|
unsupported action '%1' !!! emailadmin en Unsupported action '%1' !
|
||||||
|
update current email address: emailadmin en Update current email address:
|
||||||
|
use default emailadmin en use default
|
||||||
|
use ldap defaults emailadmin en Use LDAP defaults
|
||||||
|
use predefined username and password defined below emailadmin en Use predefined username and password defined below
|
||||||
|
use smtp auth emailadmin en Use SMTP authentication
|
||||||
|
use tls authentication emailadmin en Use TLS authentication
|
||||||
|
use tls encryption emailadmin en Use TLS encryption
|
||||||
|
use users email-address (as seen in useraccount) emailadmin en Use users email address, as set in user account
|
||||||
|
user can edit forwarding address emailadmin en User can edit forwarding address
|
||||||
|
userid@domain eg. u1234@domain emailadmin en UserId@domain eg. u1234@domain
|
||||||
|
username (standard) emailadmin en Username (standard)
|
||||||
|
username specified below for all emailadmin en Username specified below for all
|
||||||
|
username/password defined by admin emailadmin en Username / Password defined by admin
|
||||||
|
username@domainname (virtual mail manager) emailadmin en username@domainname (Virtual MAIL ManaGeR)
|
||||||
|
users can define their own emailaccounts emailadmin en Users can define their own email accounts
|
||||||
|
users can define their own identities emailadmin en Users can define their own identities
|
||||||
|
users can define their own signatures emailadmin en Users can define their own signatures
|
||||||
|
users can utilize these stationery templates emailadmin en Users can utilize these stationery templates
|
||||||
|
using data from mozilla ispdb for provider %1 emailadmin en Using data from Mozilla ISPDB for provider %1
|
||||||
|
vacation messages with start- and end-date require an admin account to be set emailadmin en Vacation messages with start and end date require an admin account to be set!
|
||||||
|
vacation notice emailadmin en Vacation notice
|
||||||
|
virtual mail manager emailadmin en Virtual MAIL ManaGeR
|
||||||
|
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin en Yes, use credentials below only for alarms and notifications, otherwise use credentials of current user
|
||||||
|
yes, use credentials of current user or if given credentials below emailadmin en Yes, use credentials of current user or if given credentials below
|
||||||
|
you can use wizard to fix account settings or delete account. emailadmin en You can use wizard to fix account settings or delete account.
|
||||||
|
you have received a new message on the emailadmin en You have received a new message on the
|
||||||
|
you need to specify a forwarding address, when checking "%1"! emailadmin en You need to specify a forwarding address, when checking "%1"!
|
||||||
|
your message to %1 was displayed. emailadmin en Your message to %1 was displayed.
|
||||||
|
your name emailadmin en Your name
|
||||||
|
@ -691,3 +691,161 @@ you need to select some users first! admin es-es ¡Necesita seleccionar antes al
|
|||||||
you will need to remove the subcategories before you can delete this category admin es-es Deberá eliminar las subcategorías antes de poder borrar esta categoría
|
you will need to remove the subcategories before you can delete this category admin es-es Deberá eliminar las subcategorías antes de poder borrar esta categoría
|
||||||
your last submission was less then %1 days ago! admin es-es ¡Su último envío fue hace menos de %1 días!
|
your last submission was less then %1 days ago! admin es-es ¡Su último envío fue hace menos de %1 días!
|
||||||
your session could not be verified. admin es-es Su sesión no pudo ser verificada.
|
your session could not be verified. admin es-es Su sesión no pudo ser verificada.
|
||||||
|
(no subject) emailadmin es-es (Sin asunto)
|
||||||
|
account '%1' not found !!! emailadmin es-es ¡No se encontró la cuenta '%1'!
|
||||||
|
active templates emailadmin es-es Plantillas activas
|
||||||
|
add new email address: emailadmin es-es Añadir nueva dirección de correo
|
||||||
|
add profile emailadmin es-es Añadir perfil
|
||||||
|
admin dn emailadmin es-es dn del administrador
|
||||||
|
admin password emailadmin es-es contraseña del administrador
|
||||||
|
admin username emailadmin es-es usuario del administrador
|
||||||
|
advanced options emailadmin es-es opciones avanzadas
|
||||||
|
alternate email address emailadmin es-es dirección de correo alternativa
|
||||||
|
any application emailadmin es-es cualquier aplicación
|
||||||
|
any group emailadmin es-es cualquier grupo
|
||||||
|
any user emailadmin es-es cualquier usuario
|
||||||
|
back to admin/grouplist emailadmin es-es Volver a Administración/Lista de grupos
|
||||||
|
back to admin/userlist emailadmin es-es Volver a Administración/Lista de usuarios
|
||||||
|
bad login name or password. emailadmin es-es Nombre de usuario o contraseña incorrectos
|
||||||
|
bad or malformed request. server responded: %s emailadmin es-es Petición errónea o mal formado. El servidor respondió: %s
|
||||||
|
bad request: %s emailadmin es-es Petición errónea: %s
|
||||||
|
can be used by application emailadmin es-es puede usarse por la aplicación
|
||||||
|
can be used by group emailadmin es-es puede usarse por el grupo
|
||||||
|
can be used by user emailadmin es-es puede usarse por el usuario
|
||||||
|
connection dropped by imap server. emailadmin es-es El servidor IMAP ha interrumpido la conexión
|
||||||
|
continue emailadmin es-es Continuar
|
||||||
|
could not complete request. reason given: %s emailadmin es-es No se pudo completar la solicitud. Motivo: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin es-es No se pudo abrir una conexión segura con el servidor IMAP. %s: %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin es-es CRAM-MD5 o DIGEST-MD5 necesitan el paquete Auth_SASL para estar instalado.
|
||||||
|
cyrus imap server emailadmin es-es Servidor IMAP Cyrus
|
||||||
|
cyrus imap server administration emailadmin es-es Administración del servidor IMAP Cyrus
|
||||||
|
default emailadmin es-es predeterminada
|
||||||
|
deliver extern emailadmin es-es entrega externa
|
||||||
|
displaying html messages is disabled emailadmin es-es Mostrar los mensajes en HTML está desactivado
|
||||||
|
do not validate certificate emailadmin es-es No validar el certificado
|
||||||
|
do you really want to delete this profile emailadmin es-es ¿Realmente desea borrar este perfil?
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin es-es Realmente desea restablecer el filtro para la lista de perfiles
|
||||||
|
domainname emailadmin es-es nombre del dominio
|
||||||
|
edit email settings emailadmin es-es editar configuración de la cuenta
|
||||||
|
email account active emailadmin es-es cuenta de correo electrónico activa
|
||||||
|
email address emailadmin es-es dirección de correo electrónico
|
||||||
|
email settings common es-es Configuración del correo electrónico
|
||||||
|
emailadmin emailadmin es-es Administración del correo electrónico
|
||||||
|
emailadmin: group assigned profile common es-es eMailAdmin: perfil asignado al grupo
|
||||||
|
emailadmin: user assigned profile common es-es eMailAdmin: perfil asignado al usuario
|
||||||
|
enable cyrus imap server administration emailadmin es-es activar administración del servidor Cyrus IMAP
|
||||||
|
enable sieve emailadmin es-es activar Sieve
|
||||||
|
encrypted connection emailadmin es-es conexión cifrada
|
||||||
|
encryption settings emailadmin es-es configuración del cifrado
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin es-es introduzca el dominio predeterminado (de usuario@dominio)
|
||||||
|
entry saved emailadmin es-es La entrada ha sido guardada
|
||||||
|
error connecting to imap server. %s : %s. emailadmin es-es Error al conectar con el servidor IMAP. %s: %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin es-es Error al conectar con el servidor IMAP: [%s] %s.
|
||||||
|
error saving account! emailadmin es-es ¡Error al guardar la cuenta!
|
||||||
|
error saving the entry!!! emailadmin es-es Error guardando el elemento!!!
|
||||||
|
event details follow emailadmin es-es A continuación, los detalles del evento
|
||||||
|
filtered by account emailadmin es-es filtrado por cuenta
|
||||||
|
filtered by group emailadmin es-es filtrado por grupo
|
||||||
|
forward also to emailadmin es-es reenviar también a
|
||||||
|
forward email's to emailadmin es-es reenviar correos a
|
||||||
|
forward only emailadmin es-es sólo reenviar
|
||||||
|
global options emailadmin es-es opciones globales
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin es-es Si usa SSL o TLS, debe tener cargada la extensión openssl de PHP.
|
||||||
|
imap admin password admin es-es contraseña del administrador IMAP
|
||||||
|
imap admin user admin es-es usuario administrador IMAP
|
||||||
|
imap c-client version < 2001 emailadmin es-es Versión C-Cliente IMAP < 2001
|
||||||
|
imap server emailadmin es-es Servidor IMAP
|
||||||
|
imap server closed the connection. emailadmin es-es El servidor IMAP cerró la conexión.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin es-es El servidor IMAP cerró la conexión. El servidor respondió: %s
|
||||||
|
imap server hostname or ip address emailadmin es-es Servidor IMAP o dirección IP
|
||||||
|
imap server logintyp emailadmin es-es Tipo de sesión del servidor IMAP
|
||||||
|
imap server name emailadmin es-es Nombre del servidor IMAP
|
||||||
|
imap server port emailadmin es-es Puerto del servidor IMAP
|
||||||
|
imap/pop3 server name emailadmin es-es Nombre del servidor POP/IMAP
|
||||||
|
importance emailadmin es-es Importancia
|
||||||
|
in mbyte emailadmin es-es en MBytes
|
||||||
|
inactive emailadmin es-es inactivo
|
||||||
|
ldap basedn emailadmin es-es basedn para LDAP
|
||||||
|
ldap server emailadmin es-es servidor LDAP
|
||||||
|
ldap server accounts dn emailadmin es-es DN para cuentas del servidor LDAP
|
||||||
|
ldap server admin dn emailadmin es-es DN del administrador del servidor LDAP
|
||||||
|
ldap server admin password emailadmin es-es contraseña del administrador del servidor LDAP
|
||||||
|
ldap server hostname or ip address emailadmin es-es Nombre del servidor LDAP o dirección IP
|
||||||
|
ldap settings emailadmin es-es Configuración LDAP
|
||||||
|
leave empty for no quota emailadmin es-es Dejar en blanco para no poner cuota
|
||||||
|
mail settings admin es-es Configuración del correo.
|
||||||
|
manage stationery templates emailadmin es-es Gestionar plantillas preimpresas
|
||||||
|
name of organisation emailadmin es-es Nombre de la organización
|
||||||
|
no alternate email address emailadmin es-es Sin dirección de correo alternativa
|
||||||
|
no encryption emailadmin es-es Sin cifrar
|
||||||
|
no forwarding email address emailadmin es-es Sin dirección de correo para reenviar
|
||||||
|
no message returned. emailadmin es-es No se devolvió ningún mensaje.
|
||||||
|
no plain text part found emailadmin es-es No se encontró ninguna parte con texto sencillo
|
||||||
|
no supported imap authentication method could be found. emailadmin es-es No se pudo encontrar ningún método soportado de identificación IMAP.
|
||||||
|
order emailadmin es-es orden
|
||||||
|
organisation emailadmin es-es organización
|
||||||
|
plesk can't rename users --> request ignored emailadmin es-es Plesk no puede renombrar usuarios --> Se ignora la solicitud
|
||||||
|
plesk imap server (courier) emailadmin es-es Servidor IMAP Plesk (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin es-es ¡No se encontró el script de correo de Plesk '%1'!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin es-es Plesk requiere que las contraseñas tengan al menos 5 caracteres y no contengan el nombre de la cuenta --> NO se establece la contraseña
|
||||||
|
plesk smtp-server (qmail) emailadmin es-es Servidor SMTP de Plesk (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin es-es Nombre del servidor POP3 o dirección IP
|
||||||
|
pop3 server port emailadmin es-es Puerto del servidor POP3
|
||||||
|
port emailadmin es-es puerto
|
||||||
|
postfix with ldap emailadmin es-es Postfix con LDAP
|
||||||
|
profile access rights emailadmin es-es Derechos de acceso del perfil
|
||||||
|
profile is active emailadmin es-es el perfil está activo
|
||||||
|
profile list emailadmin es-es Lista de perfiles
|
||||||
|
profile name emailadmin es-es Nombre del perfil
|
||||||
|
qmaildotmode emailadmin es-es Modo de punto de qmail
|
||||||
|
quota settings emailadmin es-es Configuración de las cuotas
|
||||||
|
quota size in mbyte emailadmin es-es tamaño de la cuota en MBytes
|
||||||
|
remove emailadmin es-es borrar
|
||||||
|
reset filter emailadmin es-es restablecer filtro
|
||||||
|
select type of imap server emailadmin es-es Seleccione el tipo de servidor IMAP
|
||||||
|
select type of imap/pop3 server emailadmin es-es Seleccione el tipo de servidor IMAP/POP3
|
||||||
|
select type of smtp server emailadmin es-es Seleccione el tipo de servidor SMTP
|
||||||
|
send using this email-address emailadmin es-es enviar usando esta dirección de correo electrónico
|
||||||
|
server settings emailadmin es-es configuración del servidor
|
||||||
|
sieve server hostname or ip address emailadmin es-es Nombre del servidor Sieve o dirección IP
|
||||||
|
sieve server port emailadmin es-es Puerto del servidor Sieve
|
||||||
|
sieve settings emailadmin es-es Configuración de Sieve
|
||||||
|
smtp authentication emailadmin es-es identificación SMTP
|
||||||
|
smtp options emailadmin es-es opciones SMTP
|
||||||
|
smtp server name emailadmin es-es Nombre del servidor SMTP
|
||||||
|
smtp settings emailadmin es-es configuración SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin es-es Nombre del servidor SMTP o dirección IP
|
||||||
|
smtp-server port emailadmin es-es Puerto del servidor SMTP
|
||||||
|
standard emailadmin es-es Estándar
|
||||||
|
standard imap server emailadmin es-es Servidor IMAP estándar
|
||||||
|
standard pop3 server emailadmin es-es Servidor POP3 estándar
|
||||||
|
standard smtp-server emailadmin es-es Servidor SMTP estándar
|
||||||
|
stationery emailadmin es-es material preimpreso
|
||||||
|
templates emailadmin es-es Plantillas
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin es-es El servidor IMAP no parece soportar el método de identificación seleccionado. Por favor, póngase en contacto el administrador de su sistema.
|
||||||
|
the mimeparser can not parse this message. emailadmin es-es El intérprete mime no puede interpretar este mensaje
|
||||||
|
this php has no imap support compiled in!! emailadmin es-es ¡¡Esta instalación de PHP no tiene soporte IMAP!!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin es-es Para usar una conexión TLS, debe ejecutar una versión de PHP 5.1.0 o superior.
|
||||||
|
unexpected response from server to authenticate command. emailadmin es-es Respuesta inesperada del servidor al comando AUTHENTICATE.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin es-es Respuesta inesperada del servidor a la respuesta Digest-MD5.
|
||||||
|
unexpected response from server to login command. emailadmin es-es Respuesta inesperada del servidor al comando LOGIN.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin es-es Respuesta IMAP desconocida del servidor. El servidor respondió: %s
|
||||||
|
unsupported action '%1' !!! emailadmin es-es ¡La acción '%1' no está soportada!
|
||||||
|
update current email address: emailadmin es-es Actualizar la dirección de correo actual:
|
||||||
|
use default emailadmin es-es Usar predeterminado
|
||||||
|
use ldap defaults emailadmin es-es usar las opciones predeterminadas para LDAP
|
||||||
|
use predefined username and password defined below emailadmin es-es Usar el usuario predefinido y las contraseñas definidas debajo
|
||||||
|
use smtp auth emailadmin es-es Usar identificación SMTP
|
||||||
|
use tls authentication emailadmin es-es Usar identificación TLS
|
||||||
|
use tls encryption emailadmin es-es Usar cifrado TLS
|
||||||
|
user can edit forwarding address emailadmin es-es El usuario puede editar la dirección de reenvío
|
||||||
|
username (standard) emailadmin es-es usuario (estándar)
|
||||||
|
username/password defined by admin emailadmin es-es Usuario/contraseña definida por el administrador
|
||||||
|
username@domainname (virtual mail manager) emailadmin es-es usuario@dominio (Gestor de correo virtual)
|
||||||
|
users can define their own emailaccounts emailadmin es-es Los usuarios pueden definir sus propias cuentas de correo
|
||||||
|
users can define their own identities emailadmin es-es Los usuarios pueden definir sus propias identidades
|
||||||
|
users can define their own signatures emailadmin es-es Los usuarios pueden definir sus propias firmas
|
||||||
|
users can utilize these stationery templates emailadmin es-es Los usuarios pueden utilizar estas plantillas preimpresas
|
||||||
|
virtual mail manager emailadmin es-es Gestor de correo virtual
|
||||||
|
you have received a new message on the emailadmin es-es Ha recibido un mensaje nuevo en la
|
||||||
|
your name emailadmin es-es Su nombre
|
||||||
|
@ -239,3 +239,55 @@ you must enter an application title. admin et Pead sisesestama rakenduse pealkir
|
|||||||
you must select a file type admin et Pead valima failitüübi
|
you must select a file type admin et Pead valima failitüübi
|
||||||
you must select at least one group member. admin et Pead valima vähemalt ühe grupiliikme.
|
you must select at least one group member. admin et Pead valima vähemalt ühe grupiliikme.
|
||||||
you will need to remove the subcategories before you can delete this category admin et Pead eemaldama kõigepealt alamkategoorjad kustutamaks seda kategooriat !
|
you will need to remove the subcategories before you can delete this category admin et Pead eemaldama kõigepealt alamkategoorjad kustutamaks seda kategooriat !
|
||||||
|
account '%1' not found !!! emailadmin et Kontot '%1' ei leitud !!!
|
||||||
|
add new email address: emailadmin et Lisa uus email aadress
|
||||||
|
add profile emailadmin et Lisa Profiil
|
||||||
|
admin password emailadmin et admin parool
|
||||||
|
admin username emailadmin et admin kasutajanimi
|
||||||
|
alternate email address emailadmin et Alternatiivne email aadress
|
||||||
|
bad login name or password. emailadmin et Vale kasutajanimi või parool
|
||||||
|
continue emailadmin et Jätka
|
||||||
|
cyrus imap server emailadmin et Cyrus IMAP Server
|
||||||
|
cyrus imap server administration emailadmin et Cyrus IMAP server administreerimine
|
||||||
|
default emailadmin et vaikimisi
|
||||||
|
displaying html messages is disabled emailadmin et html kirjade näitamine on välja lülitatud
|
||||||
|
do not validate certificate emailadmin et ära valideeri sertifikaati
|
||||||
|
do you really want to delete this profile emailadmin et Tahad tõesti kustutada seda Profiili
|
||||||
|
domainname emailadmin et Doomeninimi
|
||||||
|
edit email settings emailadmin et muuda emaili setinguid
|
||||||
|
email account active emailadmin et email konto aktiivne
|
||||||
|
email address emailadmin et email aadress
|
||||||
|
email settings common et Email setingud
|
||||||
|
encrypted connection emailadmin et krüpteeritud ühendus
|
||||||
|
encryption settings emailadmin et Krüpteerimise setingud
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin et Sisesta oma vaikimisi mail doomen (kasutaja@doomen)
|
||||||
|
entry saved emailadmin et Kirje salvestatud
|
||||||
|
error saving the entry!!! emailadmin et Viga kirje salvestamisel !!!
|
||||||
|
global options emailadmin et Globaalsed omadused
|
||||||
|
imap admin password admin et IMAP admin parool
|
||||||
|
imap admin user admin et IMAP admin kasutaja
|
||||||
|
imap c-client version < 2001 emailadmin et IMAP C-Client Versioon < 2001
|
||||||
|
imap server emailadmin et IMAP Server
|
||||||
|
imap server closed the connection. emailadmin et IMAP server sulges ühenduse.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin et IMAP Server sulges ühenduse. Server Vastas: %s
|
||||||
|
imap server name emailadmin et imap serveri nimi
|
||||||
|
imap server port emailadmin et IMAP serveri port
|
||||||
|
imap/pop3 server name emailadmin et IMAP/POP3 server nimi
|
||||||
|
ldap settings emailadmin et LDAP setingud
|
||||||
|
mail settings admin et Mail setingud
|
||||||
|
no alternate email address emailadmin et pole alternatiivset email aadressi
|
||||||
|
no encryption emailadmin et ilna krüpteeringutta
|
||||||
|
organisation emailadmin et Organisatsioon
|
||||||
|
pop3 server port emailadmin et POP3 serveri port
|
||||||
|
port emailadmin et port
|
||||||
|
remove emailadmin et eemalda
|
||||||
|
select type of imap server emailadmin et vali IMAP serveri tüüp
|
||||||
|
select type of imap/pop3 server emailadmin et vali IMAP/POP3 serveri tüüp
|
||||||
|
select type of smtp server emailadmin et Vali SMTP serveri tüüp
|
||||||
|
server settings emailadmin et Serveri setingud
|
||||||
|
sieve server port emailadmin et Sieve serveri port
|
||||||
|
sieve settings emailadmin et Sieve setingud
|
||||||
|
smtp server name emailadmin et SMTP serveri nimi
|
||||||
|
smtp settings emailadmin et SMTP setingud
|
||||||
|
smtp-server port emailadmin et SMTP serveri port
|
||||||
|
use default emailadmin et Kasuta vaikimisi
|
||||||
|
@ -361,3 +361,37 @@ you must enter an application name. admin eu Aplikazioari izen bat eman behar di
|
|||||||
you must enter an application title. admin eu Aplikazioari izenburu bat jarri behar diozu.
|
you must enter an application title. admin eu Aplikazioari izenburu bat jarri behar diozu.
|
||||||
you must select a file type admin eu Fitxategi mota bat aukeratu behar duzu
|
you must select a file type admin eu Fitxategi mota bat aukeratu behar duzu
|
||||||
your session could not be verified. admin eu Zure saioa ezin izan da egiaztatu
|
your session could not be verified. admin eu Zure saioa ezin izan da egiaztatu
|
||||||
|
(no subject) emailadmin eu (gai gabe)
|
||||||
|
advanced options emailadmin eu Aukera aurreratuak
|
||||||
|
alternate email address emailadmin eu Helbide elektroniko alternatiboa
|
||||||
|
bad login name or password. emailadmin eu Izen edo pasahitz okerra
|
||||||
|
default emailadmin eu Lehenetsia
|
||||||
|
email address emailadmin eu Helbide elektronikoa
|
||||||
|
encrypted connection emailadmin eu konexioa enkriptatua
|
||||||
|
entry saved emailadmin eu Sarrera gordeta
|
||||||
|
error saving the entry!!! emailadmin eu Errorea sarrera gordetzerakoan
|
||||||
|
event details follow emailadmin eu Gertakariaren detaileak
|
||||||
|
imap server emailadmin eu IMAP Zerbitzaria
|
||||||
|
imap server closed the connection. emailadmin eu IMAP zerbitzariak konexioa itxi du
|
||||||
|
in mbyte emailadmin eu MByte-sen
|
||||||
|
leave empty for no quota emailadmin eu zurian utzi kuotarik ez badago
|
||||||
|
mail settings admin eu Posta elektronikoaren konfigurazioa
|
||||||
|
no alternate email address emailadmin eu ez da ordezko helbide elektronikorik
|
||||||
|
no message returned. emailadmin eu Ez da mezurik itzuli
|
||||||
|
order emailadmin eu Ordena
|
||||||
|
organisation emailadmin eu antolaketa
|
||||||
|
port emailadmin eu ataka
|
||||||
|
postfix with ldap emailadmin eu Postfix-ak LDAP-arekin
|
||||||
|
quota settings emailadmin eu kuotaren konfigurazioa
|
||||||
|
quota size in mbyte emailadmin eu kuotaren tamaina MBytes-etan
|
||||||
|
remove emailadmin eu ezabatu
|
||||||
|
sieve settings emailadmin eu SIEVE ren lehentasunak
|
||||||
|
smtp settings emailadmin eu SMTP lehentasunak
|
||||||
|
standard emailadmin eu estandar
|
||||||
|
standard imap server emailadmin eu IMAP zerbitzari estandarra
|
||||||
|
standard pop3 server emailadmin eu POP3 zerbitzari estandarra
|
||||||
|
standard smtp-server emailadmin eu SMTP zerbitzari estandarra
|
||||||
|
this php has no imap support compiled in!! emailadmin eu PHParendako IMAPa konpilatu gabe
|
||||||
|
use default emailadmin eu Lehenetsia erabili
|
||||||
|
use smtp auth emailadmin eu SMTP autentifikazioa erabili
|
||||||
|
users can define their own emailaccounts emailadmin eu Erabiltzaileek euren posta kontuak defini ditzazkete
|
||||||
|
@ -440,3 +440,78 @@ you must enter an application name. admin fa شما باید یک نام کار
|
|||||||
you must enter an application title. admin fa شما باید یک عنوان کاربرد وارد کنید
|
you must enter an application title. admin fa شما باید یک عنوان کاربرد وارد کنید
|
||||||
you must select a file type admin fa شما باید یک نوع پرونده انتخاب کنید
|
you must select a file type admin fa شما باید یک نوع پرونده انتخاب کنید
|
||||||
you will need to remove the subcategories before you can delete this category admin fa شما باید قبل از حذف این دسته، زیر مجموعه ها را حذف کنید!
|
you will need to remove the subcategories before you can delete this category admin fa شما باید قبل از حذف این دسته، زیر مجموعه ها را حذف کنید!
|
||||||
|
(no subject) emailadmin fa (بدون عنوان)
|
||||||
|
add profile emailadmin fa افزودن مجموعه تنظیمات
|
||||||
|
admin dn emailadmin fa dn مدیر
|
||||||
|
admin password emailadmin fa گذرواژه مدیر
|
||||||
|
admin username emailadmin fa نام کاربری مدیر
|
||||||
|
advanced options emailadmin fa تنظیمات پیشرفته
|
||||||
|
alternate email address emailadmin fa نشانی پست الکترونیکی دیگر
|
||||||
|
any application emailadmin fa همه کاربردها
|
||||||
|
any group emailadmin fa همه گروهها
|
||||||
|
can be used by application emailadmin fa استفاده شود توسط کاربرد
|
||||||
|
can be used by group emailadmin fa استفاده شود توسط گروه
|
||||||
|
continue emailadmin fa ادامه
|
||||||
|
default emailadmin fa پیش فرض
|
||||||
|
deliver extern emailadmin fa حمل بیرونی
|
||||||
|
do you really want to delete this profile emailadmin fa آیا واقعا می خواهید این مجموعه تنظیمات را حذف کنید؟
|
||||||
|
domainname emailadmin fa نام حوزه
|
||||||
|
edit email settings emailadmin fa ویرایش تنظیمات نامه الکترونیکی
|
||||||
|
email account active emailadmin fa حساب نامه الکترونیکی فعال
|
||||||
|
email address emailadmin fa نشانی الکترونیکی
|
||||||
|
emailadmin emailadmin fa مدیر رایانامه
|
||||||
|
enable sieve emailadmin fa فعالسازی Sieve
|
||||||
|
encryption settings emailadmin fa تنظیمات رمز نگاری
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin fa حوزه پیش فرض خود را وارد کنید:(مثلا: fgpars.net)
|
||||||
|
entry saved emailadmin fa ورودی ذخیره شد
|
||||||
|
error saving the entry!!! emailadmin fa خطای ذخیره ورودی!!!
|
||||||
|
event details follow emailadmin fa پیگیری جزئیات رویداد
|
||||||
|
forward also to emailadmin fa همچنین ارسال به
|
||||||
|
forward email's to emailadmin fa ارسال نامه ها به
|
||||||
|
forward only emailadmin fa فقط ارسال به
|
||||||
|
global options emailadmin fa گزینه های عمومی
|
||||||
|
imap admin password admin fa گذرواژه مدیر IMAP
|
||||||
|
imap admin user admin fa کاربر مدیر IMAP
|
||||||
|
imap server emailadmin fa کارگزار آی مپ
|
||||||
|
imap server hostname or ip address emailadmin fa نام میزبان یا نشانی IP کارگزار IMAP
|
||||||
|
imap server logintyp emailadmin fa نوع ورود کارگزار IMAP
|
||||||
|
imap server port emailadmin fa درگاه کارگزار IMAP
|
||||||
|
imap/pop3 server name emailadmin fa نام کارگزار IMAP/POP3
|
||||||
|
in mbyte emailadmin fa به مگابایت
|
||||||
|
leave empty for no quota emailadmin fa برای بدون سهمیه بودن، خالی بگذارید
|
||||||
|
mail settings admin fa تنظیمات نامه
|
||||||
|
name of organisation emailadmin fa نام سازمان
|
||||||
|
no alternate email address emailadmin fa بدون نشانی نامه الکترونیکی دیگر
|
||||||
|
no forwarding email address emailadmin fa بدون نشانی نامه الکترونیکی ارسال به دیگری
|
||||||
|
order emailadmin fa ترتیب
|
||||||
|
organisation emailadmin fa سازمان
|
||||||
|
pop3 server hostname or ip address emailadmin fa نام میزبان یا نشانی IP کارگزار POP3
|
||||||
|
pop3 server port emailadmin fa درگاه کارگزار POP3
|
||||||
|
profile access rights emailadmin fa حقوق دسترسی مجموعه تنظیمات
|
||||||
|
profile list emailadmin fa لیست مجموعه تنظیمات
|
||||||
|
profile name emailadmin fa نام مجموعه تنظیمات
|
||||||
|
quota settings emailadmin fa تنظیمات سهمیه
|
||||||
|
quota size in mbyte emailadmin fa سهمیه به مگابایت
|
||||||
|
remove emailadmin fa حذف
|
||||||
|
select type of imap/pop3 server emailadmin fa نوع کارگزار IMAP/POP3 را انتخاب کنید
|
||||||
|
select type of smtp server emailadmin fa نوع کارگزار SMTP را انتخاب کنید
|
||||||
|
server settings emailadmin fa تنظیمات کارگزار
|
||||||
|
sieve server hostname or ip address emailadmin fa نام میزبان یا نشانی IP کارگزار Sieve
|
||||||
|
sieve server port emailadmin fa درگاه کارگزار Sieve
|
||||||
|
sieve settings emailadmin fa تنظیمات Sieve
|
||||||
|
smtp authentication emailadmin fa تصدیق smtp
|
||||||
|
smtp server name emailadmin fa نام کارگزار SMTP
|
||||||
|
smtp settings emailadmin fa تنظیمات smtp
|
||||||
|
smtp-server hostname or ip address emailadmin fa نشانی IP یا نام میزبان SMTP
|
||||||
|
smtp-server port emailadmin fa درگاه کارگزار SMTP
|
||||||
|
standard emailadmin fa استاندارد
|
||||||
|
standard imap server emailadmin fa کارگزار استاندارد IMAP
|
||||||
|
standard pop3 server emailadmin fa کارگزار استاندارد POP3
|
||||||
|
standard smtp-server emailadmin fa کارگزار استاندارد SMTP
|
||||||
|
the mimeparser can not parse this message. emailadmin fa تشخیص دهنده نوع فایل قادر به تشخیص این پیام نیست
|
||||||
|
this php has no imap support compiled in!! emailadmin fa این PHP پشتیبانی از آی مپ را در خود ندارد!
|
||||||
|
use default emailadmin fa استفاده از پیش فرض
|
||||||
|
use ldap defaults emailadmin fa از پیش فرضهای LDAP استفاده شود
|
||||||
|
use smtp auth emailadmin fa استفاده از تصدیق در SMTP
|
||||||
|
users can define their own emailaccounts emailadmin fa کاربران می توانند حسابهای کاربری را خودشان تعریف کنند
|
||||||
|
your name emailadmin fa نام شما
|
||||||
|
@ -621,3 +621,170 @@ you need to select some users first! admin fi Valitse ensin käyttäjät!
|
|||||||
you will need to remove the subcategories before you can delete this category admin fi Alikategoriat on poistettava ennen kuin voit poistaa tämän kategorian!
|
you will need to remove the subcategories before you can delete this category admin fi Alikategoriat on poistettava ennen kuin voit poistaa tämän kategorian!
|
||||||
your last submission was less then %1 days ago! admin fi Viimeisin lähettämäsi tieto on vähemmän kuin %1 päivää sitten!
|
your last submission was less then %1 days ago! admin fi Viimeisin lähettämäsi tieto on vähemmän kuin %1 päivää sitten!
|
||||||
your session could not be verified. admin fi Istuntoasi ei voitu varmentaa.
|
your session could not be verified. admin fi Istuntoasi ei voitu varmentaa.
|
||||||
|
%1 entries deleted. emailadmin fi %1 tapahtumaa poistettu
|
||||||
|
(no subject) emailadmin fi Ei aihetta
|
||||||
|
account '%1' not found !!! emailadmin fi Tiliä '%1' ei löytynyt!
|
||||||
|
active templates emailadmin fi Aktiiviset mallipohjat
|
||||||
|
add new email address: emailadmin fi Lisää uusi sähköpostiosoite
|
||||||
|
add profile emailadmin fi Lisää profiili
|
||||||
|
admin dn emailadmin fi Ylläpitäjän dn
|
||||||
|
admin password emailadmin fi Ylläpitäjän salasana
|
||||||
|
admin username emailadmin fi Ylläpitäjän käyttäjätunnus
|
||||||
|
advanced options emailadmin fi Lisäasetukset
|
||||||
|
alternate email address emailadmin fi Vaihtoehtoinen sähköpostiosoite
|
||||||
|
any application emailadmin fi Mikä tahansa sovellus
|
||||||
|
any group emailadmin fi Mikä tahansa ryhmä
|
||||||
|
any user emailadmin fi Kuka tahansa käyttäjä
|
||||||
|
back to admin/grouplist emailadmin fi Takaisin ylläpitoon / Ryhmäluetteloon
|
||||||
|
back to admin/userlist emailadmin fi Takaisin ylläpitoon / Käyttäjäluetteloon
|
||||||
|
bad login name or password. emailadmin fi Väärä käyttäjätunnus tai salasana
|
||||||
|
bad or malformed request. server responded: %s emailadmin fi Väärä tai viallinen pyyntö. %s
|
||||||
|
bad request: %s emailadmin fi Väärä pyyntö: %s
|
||||||
|
can be used by application emailadmin fi Sovellukselle
|
||||||
|
can be used by group emailadmin fi Ryhmälle
|
||||||
|
can be used by user emailadmin fi Käyttäjälle
|
||||||
|
connection dropped by imap server. emailadmin fi Yhteys IMAP palvelimeen katkesi.
|
||||||
|
continue emailadmin fi Jatka
|
||||||
|
could not complete request. reason given: %s emailadmin fi Pyyntöä ei voitu toteuttaa. %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin fi Turvattua yhteyttä IMAP palvelimeen ei voitu avata. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin fi CRAM-MD5 tai DIGEST-MD5 käyttö edellyttää Auth_SASL paketin asentamista.
|
||||||
|
cyrus imap server emailadmin fi Cyrus IMAP -palvelin
|
||||||
|
cyrus imap server administration emailadmin fi Cyrus IMAP -palvelimen hallinta
|
||||||
|
default emailadmin fi Oletus
|
||||||
|
deliver extern emailadmin fi Deliver extern
|
||||||
|
displaying html messages is disabled emailadmin fi HTML viestien näyttäminen on estetty
|
||||||
|
do not validate certificate emailadmin fi Älä tarkista sertifikaattia
|
||||||
|
do you really want to delete this profile emailadmin fi Haluatko varmasti poistaa tämän profiilin?
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin fi Haluatko varmasti uudelleenasettaa suotimen profiililuetteloon?
|
||||||
|
domainname emailadmin fi Verkkotunnus
|
||||||
|
edit email settings emailadmin fi Muokkaa sähköpostin asetuksia
|
||||||
|
email account active emailadmin fi Sähköpostitili käytössä
|
||||||
|
email address emailadmin fi Sähköpostiosoite
|
||||||
|
email settings common fi Sähköpostin asetukset
|
||||||
|
emailadmin emailadmin fi Sähköpostin ylläpito
|
||||||
|
emailadmin: group assigned profile common fi Sähköpostin ylläpito: Ryhmälle suunnattu profiili
|
||||||
|
emailadmin: user assigned profile common fi Sähköpostin ylläpito: Käyttäjälle suunnattu profiili
|
||||||
|
enable cyrus imap server administration emailadmin fi Ota Cyrus IMAP -palvelimen hallinta käyttöön
|
||||||
|
enable sieve emailadmin fi Ota Sieve käyttöön
|
||||||
|
encrypted connection emailadmin fi Yhteyden suojaus
|
||||||
|
encryption settings emailadmin fi Yhteyden suojausasetukset
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin fi Anna oletusverkkotunnus (käyttäjä@verkkotunnus)
|
||||||
|
entry saved emailadmin fi Tallennettu
|
||||||
|
error connecting to imap server. %s : %s. emailadmin fi Virhe yhdistettäessä IMAP palvelimeen. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin fi Virhe yhdistettäessä IMAP palvelimeen. [%s] %s.
|
||||||
|
error deleting entry! emailadmin fi Virhe poistettaessa!
|
||||||
|
error saving account! emailadmin fi Virhe tallennettaessa käyttäjätiliä!
|
||||||
|
error saving the entry!!! emailadmin fi Virhe tallennettaessa!
|
||||||
|
event details follow emailadmin fi Tapahtuman yksityiskohdat alla
|
||||||
|
filtered by account emailadmin fi Käyttäjätilien mukaan
|
||||||
|
filtered by group emailadmin fi Ryhmän mukaan
|
||||||
|
forward also to emailadmin fi Välitä osoitteeseen
|
||||||
|
forward email's to emailadmin fi Välitä osoitteeseen
|
||||||
|
forward only emailadmin fi Ainoastaan edelleenlähetys
|
||||||
|
global options emailadmin fi Yleiset asetukset
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin fi Jos SSL tai TLS on käytössä, PHP openssl lisäosa pitää olla ladattuna.
|
||||||
|
imap admin password admin fi IMAP admin salasana
|
||||||
|
imap admin user admin fi IMAP admin käyttäjätunnus
|
||||||
|
imap c-client version < 2001 emailadmin fi IMAP C-Client versio < 2001
|
||||||
|
imap server emailadmin fi IMAP -palvelin
|
||||||
|
imap server closed the connection. emailadmin fi IMAP palvelin katkaisi yhteyden.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin fi IMAP palvelin katkaisi yhteyden. %s
|
||||||
|
imap server hostname or ip address emailadmin fi IMAP -palvelimen nimi tai IP-osoite
|
||||||
|
imap server logintyp emailadmin fi IMAP -palvelimen käyttäjätunnistus
|
||||||
|
imap server name emailadmin fi IMAP -palvelimen nimi
|
||||||
|
imap server port emailadmin fi IMAP -palvelimen portti
|
||||||
|
imap/pop3 server name emailadmin fi IMAP / POP3 -palvelimen nimi
|
||||||
|
importance emailadmin fi Tärkeys
|
||||||
|
in mbyte emailadmin fi Megatavua
|
||||||
|
inactive emailadmin fi Ei käytössä
|
||||||
|
ldap basedn emailadmin fi LDAP basedn
|
||||||
|
ldap server emailadmin fi LDAP -palvelin
|
||||||
|
ldap server accounts dn emailadmin fi LDAP -tunnusten DN
|
||||||
|
ldap server admin dn emailadmin fi LDAP -ylläpidon DN
|
||||||
|
ldap server admin password emailadmin fi LDAP -hallinnan salasana
|
||||||
|
ldap server hostname or ip address emailadmin fi LDAP -palvelimen nimi tai IP-osoite
|
||||||
|
ldap settings emailadmin fi LDAP -asetukset
|
||||||
|
leave empty for no quota emailadmin fi Jätä tyhjäksi, jos ei rajoiteta
|
||||||
|
mail settings admin fi Sähköpostin asetukset
|
||||||
|
manage stationery templates emailadmin fi Hallitse sähköpostin taustakuvamallipohjia
|
||||||
|
mb used emailadmin fi MB käytetty
|
||||||
|
name of organisation emailadmin fi Organisaation nimi
|
||||||
|
no alternate email address emailadmin fi Ei vaihtoehtoista osoitetta
|
||||||
|
no encryption emailadmin fi Ei suojausta
|
||||||
|
no forwarding email address emailadmin fi Välityksen sähköpostiosoitetta ei löytynyt
|
||||||
|
no message returned. emailadmin fi Viestiä ei palautettu
|
||||||
|
no plain text part found emailadmin fi Pelkkää tekstiä ei löytynyt
|
||||||
|
no supported imap authentication method could be found. emailadmin fi Tuettua IMAP tunnistustapaa ei löydetty.
|
||||||
|
order emailadmin fi Järjestys
|
||||||
|
organisation emailadmin fi Organisaatio
|
||||||
|
plesk can't rename users --> request ignored emailadmin fi Plesk ei voi nimetä käyttäjiä --> pyyntö hylätty
|
||||||
|
plesk imap server (courier) emailadmin fi Plesk IMAP palvelin (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin fi Plesk sähköpostiskriptiä '%1' ei löydy !!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin fi Plesk:n salasanassa pitää olla vähintään 5 merkkiä, eikä se saa olla käyttäjätilin nimi --> salasanaa EI ole asetettu !!!
|
||||||
|
plesk smtp-server (qmail) emailadmin fi Plesk SMTP-palvelin (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin fi POP3 -palvelimen nimi tai IP-osoite
|
||||||
|
pop3 server port emailadmin fi POP3 -palvelimen portti
|
||||||
|
port emailadmin fi Portti
|
||||||
|
postfix with ldap emailadmin fi Postfix ja LDAP
|
||||||
|
profile access rights emailadmin fi Profiilin käyttöoikeudet
|
||||||
|
profile is active emailadmin fi Profiili on aktiivinen
|
||||||
|
profile list emailadmin fi Profiileiluettelo
|
||||||
|
profile name emailadmin fi Profiilin nimi
|
||||||
|
qmaildotmode emailadmin fi qmaildotmode
|
||||||
|
quota settings emailadmin fi Tallennuskiintiön asetukset
|
||||||
|
quota size in mbyte emailadmin fi Rajoituksen koko Mb:nä
|
||||||
|
remove emailadmin fi Poista
|
||||||
|
reset filter emailadmin fi Poista suodatin
|
||||||
|
save of message %1 failed. could not save message to folder %2 due to: %3 emailadmin fi Viestin %1 tallennus epäonnistui. Viestiä ei voitu tallentaa kansioon %2. Syy: %3
|
||||||
|
select type of imap server emailadmin fi Valitse IMAP -palvelimen tyyppi
|
||||||
|
select type of imap/pop3 server emailadmin fi Valitse IMAP / POP3 -palvelimen tyyppi
|
||||||
|
select type of smtp server emailadmin fi Valitse SMTP -palvelimen tyyppi
|
||||||
|
send using this email-address emailadmin fi Lähetä käyttäen tätä sähköpostiosoitetta
|
||||||
|
server settings emailadmin fi Palvelimen asetukset
|
||||||
|
sieve server hostname or ip address emailadmin fi Sieve -palvelimen nimi tai IP-osoite
|
||||||
|
sieve server port emailadmin fi Sieve -palvelimen portti
|
||||||
|
sieve settings emailadmin fi Sieven asetukset
|
||||||
|
smtp authentication emailadmin fi SMTP -tunnistus
|
||||||
|
smtp options emailadmin fi SMTP -asetukset
|
||||||
|
smtp server name emailadmin fi SMTP -palvelimen nimi
|
||||||
|
smtp settings emailadmin fi SMTP -asetukset
|
||||||
|
smtp-server hostname or ip address emailadmin fi SMTP -palvelimen nimi tai IP-osoite
|
||||||
|
smtp-server port emailadmin fi SMTP -palvelimen portti
|
||||||
|
standard emailadmin fi Vakio
|
||||||
|
standard imap server emailadmin fi Vakio IMAP -palvelin
|
||||||
|
standard pop3 server emailadmin fi Vakio POP3 -palvelin
|
||||||
|
standard smtp-server emailadmin fi Vakio SMTP -palvelin
|
||||||
|
starts with emailadmin fi Alkaa:
|
||||||
|
stationery emailadmin fi Sähköpostin taustakuvamallipohjat
|
||||||
|
templates emailadmin fi Mallipohjat
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin fi IMAP palvelimelta ei löydy tukea valitulle tunnistusmuodolle, ota yhteyttä järjestelmän pääkäyttäjään.
|
||||||
|
the mimeparser can not parse this message. emailadmin fi Mimeparseri ei voi jäsentää tätä viestiä
|
||||||
|
this php has no imap support compiled in!! emailadmin fi Tämä PHP ei sisällä IMAP tukea!!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin fi Käyttääksesi TLS yhteyttä, sinulla pitää olla käytössä PHP 5.1.0 tai uudempi versio.
|
||||||
|
unexpected response from server to authenticate command. emailadmin fi Odottamaton vastaus palvelimen AUTHENTICATE komennolta.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin fi Odottamaton vastaus palvelimen Digest-MD5 vastauksesta.
|
||||||
|
unexpected response from server to login command. emailadmin fi Odottamaton vastaus palvelimen LOGIN komennolta.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin fi Tuntematon IMAP vastaus palvelimelta. Palvelin vastasi: %s
|
||||||
|
unsupported action '%1' !!! emailadmin fi Toiminto, jota ei tueta '%1' !!!
|
||||||
|
update current email address: emailadmin fi Päivitä nykyinen sähköpostiosoite:
|
||||||
|
use default emailadmin fi Käytä oletusta
|
||||||
|
use ldap defaults emailadmin fi Käytä LDAP -oletuksia
|
||||||
|
use predefined username and password defined below emailadmin fi Käytä esimääriteltyä käyttäjänimeä ja salasanaa
|
||||||
|
use smtp auth emailadmin fi Käytä SMTP -käyttäjätunnistusta
|
||||||
|
use tls authentication emailadmin fi Käytä TLS -käyttäjätunnistusta
|
||||||
|
use tls encryption emailadmin fi Käytä TLS -salausta
|
||||||
|
use users email-address (as seen in useraccount) emailadmin fi Käytä käyttäjän sähköpostiosoitetta
|
||||||
|
user can edit forwarding address emailadmin fi Käyttäjä voi muokata välitys osoitetta
|
||||||
|
userid@domain eg. u1234@domain emailadmin fi käyttäjätunnus@verkkotunnus
|
||||||
|
username (standard) emailadmin fi Käyttäjätunnus (standardi)
|
||||||
|
username/password defined by admin emailadmin fi Ylläpidon määrittelemä käyttäjätunnus/salasana
|
||||||
|
username@domainname (virtual mail manager) emailadmin fi käyttäjätunnus@verkkotunnus (Virtual MAIL ManaGeR)
|
||||||
|
users can define their own emailaccounts emailadmin fi Käyttäjät voivat määritellä omia sähköpostitilejä
|
||||||
|
users can define their own identities emailadmin fi Käyttäjät voivat määritellä omia identiteettejä
|
||||||
|
users can define their own signatures emailadmin fi Käyttäjät voivat määritellä omia allekirjoituksia
|
||||||
|
users can utilize these stationery templates emailadmin fi Käyttäjät voivat määritellä omia sähköpostin taustakuvamallipohjia
|
||||||
|
virtual mail manager emailadmin fi Virtual MAIL ManaGeR
|
||||||
|
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin fi Kyllä, Käytä annettua salasanaa vain hälytyksiin ja huomautusviesteihin, muulloin käyttäjän tunnuksia
|
||||||
|
yes, use credentials of current user or if given credentials below emailadmin fi Kyllä, käyttäjän tunnukset, tai mahdolliset allaolevat tunnukset
|
||||||
|
you have received a new message on the emailadmin fi Sinulle on uusi viesti
|
||||||
|
your name emailadmin fi Nimesi
|
||||||
|
@ -706,3 +706,174 @@ you need to select some users first! admin fr Vous devez sélectionner quelques
|
|||||||
you will need to remove the subcategories before you can delete this category admin fr Vous allez devoir enlever les sous-catégories avant de pouvoir effacer cette catégorie !
|
you will need to remove the subcategories before you can delete this category admin fr Vous allez devoir enlever les sous-catégories avant de pouvoir effacer cette catégorie !
|
||||||
your last submission was less then %1 days ago! admin fr Votre dernier envoi était il y a moins de %1 jour(s) !
|
your last submission was less then %1 days ago! admin fr Votre dernier envoi était il y a moins de %1 jour(s) !
|
||||||
your session could not be verified. admin fr Votre session n'a pas pu être vérifiée.
|
your session could not be verified. admin fr Votre session n'a pas pu être vérifiée.
|
||||||
|
%1 entries deleted. emailadmin fr %1 éléments supprimés.
|
||||||
|
(no subject) emailadmin fr Pas de sujet
|
||||||
|
account '%1' not found !!! emailadmin fr Le compte %1 n'a pas été trouvé!!!
|
||||||
|
active templates emailadmin fr Modèles actifs
|
||||||
|
add new email address: emailadmin fr Ajouter une nouvelle adresse email:
|
||||||
|
add profile emailadmin fr Ajouter un profil
|
||||||
|
admin dn emailadmin fr DN administrateur
|
||||||
|
admin password emailadmin fr Mot de passe administrateur
|
||||||
|
admin username emailadmin fr Nom d'utilisateur de l'administrateur
|
||||||
|
advanced options emailadmin fr Options avancées
|
||||||
|
alternate email address emailadmin fr Adresse email alternative
|
||||||
|
any application emailadmin fr Toutes les applications
|
||||||
|
any group emailadmin fr Tous les groupes
|
||||||
|
any user emailadmin fr Tous les utilisateurs
|
||||||
|
back to admin/grouplist emailadmin fr Retour à l'admin / liste des groupes
|
||||||
|
back to admin/userlist emailadmin fr Retour à l'admin / liste des utilisateurs
|
||||||
|
bad login name or password. emailadmin fr ID login ou mot de passe erroné
|
||||||
|
bad or malformed request. server responded: %s emailadmin fr Requête invalide ou erronnée. Réponse serveur: %s
|
||||||
|
bad request: %s emailadmin fr Requête invalide: %s
|
||||||
|
can be used by application emailadmin fr Peut être utilisée par application
|
||||||
|
can be used by group emailadmin fr Peut être utilisée par un groupe
|
||||||
|
can be used by user emailadmin fr Peut être utilisée par un utilisateur
|
||||||
|
connection dropped by imap server. emailadmin fr Connexion interrompue par le serveur IMAP.
|
||||||
|
continue emailadmin fr Continuer
|
||||||
|
could not complete request. reason given: %s emailadmin fr Impossible d'effectuer la requête. Raison invoquée: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin fr Impossible d'ouvrir la connexion sécurisée avec le serveur IMAP. %s: %s
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin fr CRAM-MD5 ou DIGEST-MD5 requiert l'installation du progiciel Auth_SASL
|
||||||
|
create new account emailadmin fr Créer un nouveau compte
|
||||||
|
cyrus imap server emailadmin fr Serveur Cyrus IMAP
|
||||||
|
cyrus imap server administration emailadmin fr Administration du serveur Cyrus IMAP
|
||||||
|
default emailadmin fr défaut
|
||||||
|
deliver extern emailadmin fr Relais de messagerie
|
||||||
|
displaying html messages is disabled emailadmin fr L'affichage des messages html est désactivé.
|
||||||
|
displaying plain messages is disabled emailadmin fr L'affichage des texte brut est désactivé.
|
||||||
|
do not validate certificate emailadmin fr ne pas valider le certificat
|
||||||
|
do you really want to delete this profile emailadmin fr Voulez-vous vraiment supprimer ce profil ?
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin fr Voulez-vous vraiment réinitialiser le filtre pour le listage des profils ?
|
||||||
|
domainname emailadmin fr Nom de domaine
|
||||||
|
edit email settings emailadmin fr Modifier les paramètres de messagerie
|
||||||
|
email account active emailadmin fr Compte de messagerie actif
|
||||||
|
email address emailadmin fr Adresse de messagerie
|
||||||
|
email settings common fr Paramètres de messagerie
|
||||||
|
emailadmin emailadmin fr Administration de la messagerie
|
||||||
|
emailadmin: group assigned profile common fr eMailAdmin : profil assigné par groupe
|
||||||
|
emailadmin: user assigned profile common fr eMailAdmin : profil assigné par utilisateur
|
||||||
|
enable cyrus imap server administration emailadmin fr Activer la gestion du serveur Cyrus IMAP
|
||||||
|
enable sieve emailadmin fr Activer Sieve
|
||||||
|
encrypted connection emailadmin fr connexion chiffrée
|
||||||
|
encryption settings emailadmin fr Paramètres de chiffrement
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin fr Introduisez votre domaine par défaut (utilisateur@domaine.com)
|
||||||
|
entry saved emailadmin fr Entrée enregistrée
|
||||||
|
error connecting to imap server. %s : %s. emailadmin fr Erreur de connexion avec le serveur IMAP. %s: %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin fr Erreur de connexion avec le serveur IMAP. [%s] %s.
|
||||||
|
error deleting entry! emailadmin fr Erreur à la suppression de l'entrée !
|
||||||
|
error saving account! emailadmin fr Erreur lors de l'enregistrement du compte !
|
||||||
|
error saving the entry!!! emailadmin fr Erreur à l'enregistrement de l'entrée !
|
||||||
|
event details follow emailadmin fr Les détails de l'événement suivent
|
||||||
|
filtered by account emailadmin fr Filtrage par compte
|
||||||
|
filtered by group emailadmin fr Filtrage par groupe
|
||||||
|
forward also to emailadmin fr Transférer aussi à
|
||||||
|
forward email's to emailadmin fr Transférer les emails à
|
||||||
|
forward only emailadmin fr Seulement transférer
|
||||||
|
global options emailadmin fr Options globales
|
||||||
|
hostname or ip emailadmin fr Serveur hôte ou IP
|
||||||
|
if different from email address emailadmin fr Si différent de l'adresse mail
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin fr Si vous utilisez SSl ou TLS, vous devez avoir chargé l'extension PHP openssl
|
||||||
|
if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that) emailadmin fr Si vous spécifiez le port 5190 comme port du serveur SIEVE, vous forcer le SSL pour SIEVE (et le serveur doit le supporter...)
|
||||||
|
imap admin password admin fr Mot de passe de l'administrateur IMAP
|
||||||
|
imap admin user admin fr ID administrateur IMAP
|
||||||
|
imap c-client version < 2001 emailadmin fr IMAP C-Client Version < 2001
|
||||||
|
imap server emailadmin fr Serveur IMAP
|
||||||
|
imap server closed the connection. emailadmin fr Le serveur IMAP a interrompu la connexion.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin fr Le serveur IMAP a interrompu la connexion. Réponse du serveur: %s.
|
||||||
|
imap server hostname or ip address emailadmin fr Nom du serveur IMAP ou adresse IP
|
||||||
|
imap server logintyp emailadmin fr Type d'authentification IMAP
|
||||||
|
imap server name emailadmin fr Nom du serveur IMAP
|
||||||
|
imap server port emailadmin fr Port IMAP
|
||||||
|
imap/pop3 server name emailadmin fr Nom du serveur IMAP/POP3
|
||||||
|
importance emailadmin fr Importance
|
||||||
|
in mbyte emailadmin fr en Mo
|
||||||
|
inactive emailadmin fr Inactif
|
||||||
|
ldap basedn emailadmin fr LDAP DN de base
|
||||||
|
ldap server emailadmin fr LDAP Serveur
|
||||||
|
ldap server accounts dn emailadmin fr LDAP DN contenant les comptes utilisateurs
|
||||||
|
ldap server admin dn emailadmin fr LDAP DN administrateur
|
||||||
|
ldap server admin password emailadmin fr LDAP Mot de passe administateur
|
||||||
|
ldap server hostname or ip address emailadmin fr LDAP Nom du serveur ou adresse IP
|
||||||
|
ldap settings emailadmin fr LDAP Paramètres
|
||||||
|
leave empty for no quota emailadmin fr Laisser vide pour ne pas avoir de quota
|
||||||
|
mail settings admin fr Paramètres de messagerie
|
||||||
|
mb used emailadmin fr Mo utilisés
|
||||||
|
name of organisation emailadmin fr Nom de l'organisation
|
||||||
|
no alternate email address emailadmin fr Pas d'adresse email alternative
|
||||||
|
no encryption emailadmin fr Pas de chiffrement
|
||||||
|
no forwarding email address emailadmin fr Pas d'adresse email de transfert
|
||||||
|
no message returned. emailadmin fr Aucun message n'est retourné.
|
||||||
|
no plain text part found emailadmin fr aucune section texte plein trouvée
|
||||||
|
no supported imap authentication method could be found. emailadmin fr Il n'a été trouvé aucune méthode d'authentification IMAP supportée
|
||||||
|
order emailadmin fr Ordre
|
||||||
|
organisation emailadmin fr Organisation
|
||||||
|
plesk can't rename users --> request ignored emailadmin fr Plesk ne peut pas renommer les utilisateurs --> requête ignorée
|
||||||
|
plesk imap server (courier) emailadmin fr Serveur IMAP Plesk (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin fr Le script email Plesk '%1' introuvable!!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin fr Plesk requiert des mots de passe d'au moins 5 caractères qui ne comprennent pas le nom du compte --> le mot de passe n'est PAS fixé!!!
|
||||||
|
plesk smtp-server (qmail) emailadmin fr Serveur SMTP Plesk (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin fr Nom d'hôte ou adresse IP du serveur POP3
|
||||||
|
pop3 server port emailadmin fr Port du serveur POP3
|
||||||
|
port emailadmin fr port
|
||||||
|
postfix with ldap emailadmin fr Postfix avec support LDAP
|
||||||
|
profile access rights emailadmin fr Droits d'accès du profil
|
||||||
|
profile is active emailadmin fr Le profil est actif
|
||||||
|
profile list emailadmin fr Liste des profils
|
||||||
|
profile name emailadmin fr Nom de profil
|
||||||
|
qmaildotmode emailadmin fr qmaildotmode
|
||||||
|
quota settings emailadmin fr Paramètres de quota
|
||||||
|
quota size in mbyte emailadmin fr Taille des quota en Mo
|
||||||
|
remove emailadmin fr Supprimer
|
||||||
|
required pear class mail/mimedecode.php not found. emailadmin fr Classe PEAR class Mail/mimeDecode.php non trouvée.
|
||||||
|
reset filter emailadmin fr Réinitialiser le filtre
|
||||||
|
select type of imap server emailadmin fr Sélectionner le type de serveur IMAP
|
||||||
|
select type of imap/pop3 server emailadmin fr Sélectionner le type de serveur IMAP/POP3
|
||||||
|
select type of smtp server emailadmin fr Sélectionner le type de serveur SMTP
|
||||||
|
send using this email-address emailadmin fr Envoyer en utilisant cette adresse email
|
||||||
|
server settings emailadmin fr Configuration du serveur
|
||||||
|
sieve server hostname or ip address emailadmin fr Nom ou adresse IP du serveur Sieve
|
||||||
|
sieve server port emailadmin fr Port Sieve
|
||||||
|
sieve settings emailadmin fr Paramètres Sieve
|
||||||
|
smtp authentication emailadmin fr Authentication SMTP
|
||||||
|
smtp options emailadmin fr Options SMTP
|
||||||
|
smtp server name emailadmin fr Nom du serveur SMTP
|
||||||
|
smtp settings emailadmin fr Paramètres SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin fr Nom ou adresse IP du serveur SMTP
|
||||||
|
smtp-server port emailadmin fr Port SMTP
|
||||||
|
standard emailadmin fr Standard
|
||||||
|
standard imap server emailadmin fr Serveur IMAP standard
|
||||||
|
standard pop3 server emailadmin fr Serveur POP3 standard
|
||||||
|
standard smtp-server emailadmin fr Serveur SMTP standard
|
||||||
|
starts with emailadmin fr commence par
|
||||||
|
stationery emailadmin fr Entrepôt
|
||||||
|
templates emailadmin fr Templates
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin fr Le serveur IMAP ne supporterait pas la méthode d'authentication sélectionnée. Veuillez contacter votre administrateur système.
|
||||||
|
the mimeparser can not parse this message. emailadmin fr L'analyseur mime ne peut pas décoder ce message.
|
||||||
|
this php has no imap support compiled in!! emailadmin fr Ce PHP n'est pas compilé avec le support de l'IMAP !!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin fr Pour utiliser une connexion TLS, vous devez utiliser une version PHP 5.1.0 ou supérieure.
|
||||||
|
unexpected response from server to authenticate command. emailadmin fr Réponse inattendue du serveur à la commande AUTHENTICATE.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin fr Réponse inattendue du serveur à la réponse Digest-MD5.
|
||||||
|
unexpected response from server to login command. emailadmin fr Réponse inattendue du serveur à la commande LOGIN.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin fr Réponse IMAP inconnue du serveur. Le serveur a répondu: %s
|
||||||
|
unsupported action '%1' !!! emailadmin fr Action '%1' non supportée !
|
||||||
|
update current email address: emailadmin fr Mettre à jour l'adresse email actuelle :
|
||||||
|
use default emailadmin fr Utiliser le défaut
|
||||||
|
use ldap defaults emailadmin fr Utiliser les paramètres LDAP par défaut
|
||||||
|
use predefined username and password defined below emailadmin fr Utiliser les login/mots de passe pré-définis ci-dessous
|
||||||
|
use smtp auth emailadmin fr Utiliser l'authentification SMTP
|
||||||
|
use tls authentication emailadmin fr Utiliser l'authentification TLS
|
||||||
|
use tls encryption emailadmin fr Utiliser le cryptage TLS
|
||||||
|
use users email-address (as seen in useraccount) emailadmin fr Utiliser les adresses email des utilisateurs, tel que défini dans leur profil de compte
|
||||||
|
user can edit forwarding address emailadmin fr L'utilisateur peut modifier l'adresse de transfert.
|
||||||
|
userid@domain eg. u1234@domain emailadmin fr UserId@domain ie. u1234@domain
|
||||||
|
username (standard) emailadmin fr nom de l'utilisateur (standard)
|
||||||
|
username/password defined by admin emailadmin fr Login / mot de passe définis par l'administrateur
|
||||||
|
username@domainname (virtual mail manager) emailadmin fr utilisateur@domaine (Virtual MAIL ManaGeR)
|
||||||
|
users can define their own emailaccounts emailadmin fr Les utilisateurs peuvent définir leurs propres comptes de messagerie
|
||||||
|
users can define their own identities emailadmin fr Les utilisateurs peuvent définir leurs propres identités
|
||||||
|
users can define their own signatures emailadmin fr les utilisateurs peuvent définir leurs propres signatures
|
||||||
|
vacation messages with start- and end-date require an admin account to be set emailadmin fr Les messages d'absence avec date de début et de fin doivent être définis par un administrateur !
|
||||||
|
virtual mail manager emailadmin fr Virtual MAIL ManaGeR
|
||||||
|
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin fr Oui, utiliser les infos ci-dessous seulement pour les alarmes et les notifications, autrement utiliser les informations du compte utilisateur actif.
|
||||||
|
yes, use credentials of current user or if given credentials below emailadmin fr Oui, utiliser les informations du compte utilisateur actif ou bien de ces informations ci-dessous si elles sont renseignées
|
||||||
|
you have received a new message on the emailadmin fr Vous avez reçu un nouveau message sur le
|
||||||
|
your name emailadmin fr Votre nom
|
||||||
|
@ -431,3 +431,79 @@ you must enter an application title. admin hr Morate unijeti naslov aplikacije.
|
|||||||
you must select a file type admin hr Morate izabrati vrstu datoteke.
|
you must select a file type admin hr Morate izabrati vrstu datoteke.
|
||||||
you will need to remove the subcategories before you can delete this category admin hr Morate obrisati sve podkategorije prije noego što obrišete ovu kategoriju !
|
you will need to remove the subcategories before you can delete this category admin hr Morate obrisati sve podkategorije prije noego što obrišete ovu kategoriju !
|
||||||
your session could not be verified. admin hr Vašu sesiju nije moguće potvrditi.
|
your session could not be verified. admin hr Vašu sesiju nije moguće potvrditi.
|
||||||
|
(no subject) emailadmin hr (nema teme)
|
||||||
|
add profile emailadmin hr Add Profile
|
||||||
|
admin dn emailadmin hr admin dn
|
||||||
|
admin password emailadmin hr admin password
|
||||||
|
admin username emailadmin hr admin username
|
||||||
|
advanced options emailadmin hr advanced options
|
||||||
|
alternate email address emailadmin hr alternate email address
|
||||||
|
continue emailadmin hr Continue
|
||||||
|
cyrus imap server emailadmin hr Cyrus IMAP Server
|
||||||
|
cyrus imap server administration emailadmin hr Cyrus IMAP server administration
|
||||||
|
default emailadmin hr default
|
||||||
|
deliver extern emailadmin hr deliver extern
|
||||||
|
do you really want to delete this profile emailadmin hr Do you really want to delete this Profile
|
||||||
|
domainname emailadmin hr domainname
|
||||||
|
edit email settings emailadmin hr edit email settings
|
||||||
|
email account active emailadmin hr email account active
|
||||||
|
email address emailadmin hr email address
|
||||||
|
enable cyrus imap server administration emailadmin hr enable Cyrus IMAP server administration
|
||||||
|
enable sieve emailadmin hr enable Sieve
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin hr Enter your default mail domain (from: user@domain)
|
||||||
|
entry saved emailadmin hr Entry saved
|
||||||
|
event details follow emailadmin hr Slijede detalji obveze
|
||||||
|
forward also to emailadmin hr forward also to
|
||||||
|
forward email's to emailadmin hr forward email's to
|
||||||
|
forward only emailadmin hr forward only
|
||||||
|
imap admin password admin hr IMAP admin password
|
||||||
|
imap admin user admin hr IMAP admin user
|
||||||
|
imap server emailadmin hr IMAP Poslužitelj
|
||||||
|
imap server hostname or ip address emailadmin hr IMAP server hostname or ip address
|
||||||
|
imap server logintyp emailadmin hr IMAP server login type
|
||||||
|
imap server port emailadmin hr IMAP server port
|
||||||
|
imap/pop3 server name emailadmin hr IMAP/POP3 server name
|
||||||
|
in mbyte emailadmin hr in MByte
|
||||||
|
ldap basedn emailadmin hr LDAP basedn
|
||||||
|
ldap server emailadmin hr LDAP server
|
||||||
|
ldap server accounts dn emailadmin hr LDAP server accounts DN
|
||||||
|
ldap server admin dn emailadmin hr LDAP server admin DN
|
||||||
|
ldap server admin password emailadmin hr LDAP server admin password
|
||||||
|
ldap server hostname or ip address emailadmin hr LDAP server hostname or ip address
|
||||||
|
ldap settings emailadmin hr LDAP settings
|
||||||
|
leave empty for no quota emailadmin hr leave empty for no quota
|
||||||
|
mail settings admin hr Mail settings
|
||||||
|
name of organisation emailadmin hr Name of organization
|
||||||
|
no alternate email address emailadmin hr no alternate email address
|
||||||
|
no forwarding email address emailadmin hr no forwarding email address
|
||||||
|
order emailadmin hr Naredba
|
||||||
|
organisation emailadmin hr organizacija
|
||||||
|
pop3 server hostname or ip address emailadmin hr POP3 server hostname or ip address
|
||||||
|
pop3 server port emailadmin hr POP3 server port
|
||||||
|
postfix with ldap emailadmin hr Postfix with LDAP
|
||||||
|
profile list emailadmin hr Profile List
|
||||||
|
profile name emailadmin hr Profile Name
|
||||||
|
qmaildotmode emailadmin hr qmaildotmode
|
||||||
|
quota settings emailadmin hr quota settings
|
||||||
|
remove emailadmin hr remove
|
||||||
|
select type of imap/pop3 server emailadmin hr Select type of IMAP/POP3 server
|
||||||
|
select type of smtp server emailadmin hr Select type of SMTP Server
|
||||||
|
sieve server hostname or ip address emailadmin hr Sieve server hostname or ip address
|
||||||
|
sieve server port emailadmin hr Sieve server port
|
||||||
|
sieve settings emailadmin hr Sieve settings
|
||||||
|
smtp server name emailadmin hr SMTP server name
|
||||||
|
smtp settings emailadmin hr Postavke SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin hr SMTP server hostname or IP address
|
||||||
|
smtp-server port emailadmin hr SMTP server port
|
||||||
|
standard emailadmin hr Standard
|
||||||
|
standard imap server emailadmin hr Standard IMAP server
|
||||||
|
standard pop3 server emailadmin hr Standard POP3 server
|
||||||
|
standard smtp-server emailadmin hr Standard SMTP server
|
||||||
|
this php has no imap support compiled in!! emailadmin hr Ovaj PHP nema ugrađenu podršku za IMAP!!
|
||||||
|
use default emailadmin hr Use default
|
||||||
|
use ldap defaults emailadmin hr use LDAP defaults
|
||||||
|
use smtp auth emailadmin hr Use SMTP auth
|
||||||
|
use tls authentication emailadmin hr Use TLS authentication
|
||||||
|
use tls encryption emailadmin hr Use TLS encryption
|
||||||
|
users can define their own emailaccounts emailadmin hr Users can define their own email accounts
|
||||||
|
virtual mail manager emailadmin hr Virtual MAIL ManaGeR
|
||||||
|
@ -486,3 +486,161 @@ you must select a file type admin hu Kötelező fájltípust választani
|
|||||||
you must select at least one group member. admin hu Legalább egy csoport tagot ki kell jelölnie.
|
you must select at least one group member. admin hu Legalább egy csoport tagot ki kell jelölnie.
|
||||||
you will need to remove the subcategories before you can delete this category admin hu Mielőtt ezt a kategóriát törölné, el kell távolítania az összes alkategóriáját!
|
you will need to remove the subcategories before you can delete this category admin hu Mielőtt ezt a kategóriát törölné, el kell távolítania az összes alkategóriáját!
|
||||||
your session could not be verified. admin hu Az ön munkamenete nem ellenőrizhető.
|
your session could not be verified. admin hu Az ön munkamenete nem ellenőrizhető.
|
||||||
|
(no subject) emailadmin hu (nincs tárgy)
|
||||||
|
account '%1' not found !!! emailadmin hu '%1' felhasználói azonosító nem található!
|
||||||
|
active templates emailadmin hu Aktív vázlatok
|
||||||
|
add new email address: emailadmin hu Új email cím hozzáadása:
|
||||||
|
add profile emailadmin hu Profil hozzáadása
|
||||||
|
admin dn emailadmin hu Admin dn
|
||||||
|
admin password emailadmin hu adminisztrátor jelszava
|
||||||
|
admin username emailadmin hu adminisztrátor neve
|
||||||
|
advanced options emailadmin hu haladó beállítások
|
||||||
|
alternate email address emailadmin hu alternatív emailcím
|
||||||
|
any application emailadmin hu Bármelyik modul
|
||||||
|
any group emailadmin hu Bármelyik csoport
|
||||||
|
any user emailadmin hu bármely felhasználó
|
||||||
|
back to admin/grouplist emailadmin hu Vissza az csoportok adminisztráláshoz
|
||||||
|
back to admin/userlist emailadmin hu Vissza a felhasználók adminisztráláshoz
|
||||||
|
bad login name or password. emailadmin hu Hibás belépési név vagy jelszó.
|
||||||
|
bad or malformed request. server responded: %s emailadmin hu Hibás kérés. Szerver válasza: %s
|
||||||
|
bad request: %s emailadmin hu Hibás kérés: %s
|
||||||
|
can be used by application emailadmin hu Ez a modul használhatja
|
||||||
|
can be used by group emailadmin hu Ez a csoport használhatja
|
||||||
|
can be used by user emailadmin hu a felhasználó alkalmazhatja
|
||||||
|
connection dropped by imap server. emailadmin hu A kapcsolatot az IMAP szerver eldobta.
|
||||||
|
continue emailadmin hu Folytat
|
||||||
|
could not complete request. reason given: %s emailadmin hu Kérést nem lehet teljesíteni. Az ok: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin hu Nem létesíthető titkos csatorna az IMAP szerverhez. %s : %s
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin hu CRAM-MD5 vagy DIGEST-MD5 használatához az Auth_SASL csomagot telepíteni kell.
|
||||||
|
cyrus imap server emailadmin hu Cyrus IMAP-kiszolgáló
|
||||||
|
cyrus imap server administration emailadmin hu Cyrus IMAP-kiszolgáló adminisztrációja
|
||||||
|
default emailadmin hu Alapértelmezett
|
||||||
|
deliver extern emailadmin hu külső kézbesítés
|
||||||
|
displaying html messages is disabled emailadmin hu HTML levelek megjelenítése tiltva
|
||||||
|
do not validate certificate emailadmin hu ne ellenőrizze a tanúsítványt
|
||||||
|
do you really want to delete this profile emailadmin hu Valóban törölni kívánja ezt a profilt
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin hu Valóban törölni szeretnéd a profillista szűrőt?
|
||||||
|
domainname emailadmin hu tartománynév
|
||||||
|
edit email settings emailadmin hu email beállítások szerkesztése
|
||||||
|
email account active emailadmin hu email azonosító aktív
|
||||||
|
email address emailadmin hu email cím
|
||||||
|
email settings common hu Email beállítások
|
||||||
|
emailadmin emailadmin hu EmailAdmin
|
||||||
|
emailadmin: group assigned profile common hu eMailAdmin: csoport a profilhoz hozzárendelve
|
||||||
|
emailadmin: user assigned profile common hu eMailAdmin: felhasználó a profilhoz hozzárendelve
|
||||||
|
enable cyrus imap server administration emailadmin hu Cyrus IMAP-kiszolgáló adminisztrációjának engedélyezése
|
||||||
|
enable sieve emailadmin hu Sieve engedélyezése
|
||||||
|
encrypted connection emailadmin hu titkosított kapcsolat
|
||||||
|
encryption settings emailadmin hu Titkosítás beállításai
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin hu Adja meg az alapértelmezett levelezési tartományt (a felhasználó@tartomány-ból)
|
||||||
|
entry saved emailadmin hu Bejegyzés elmentve
|
||||||
|
error connecting to imap server. %s : %s. emailadmin hu Hiba történt az IMAP szerverhez csatlakozás közben. %s : %s
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin hu Hiba történt az IMAP szerverhez csatlakozás közben. [%s ]: %s
|
||||||
|
error saving account! emailadmin hu Felhasználói hozzáférés mentése sikertelen!
|
||||||
|
error saving the entry!!! emailadmin hu Bejegyzés mentése közben hiba történt!!!
|
||||||
|
event details follow emailadmin hu Esemény jellemzőinek követése
|
||||||
|
filtered by account emailadmin hu Fiók szerint szűrve
|
||||||
|
filtered by group emailadmin hu Csoport szerint szűrve
|
||||||
|
forward also to emailadmin hu továbbítsd ide is
|
||||||
|
forward email's to emailadmin hu email továbbítása ide
|
||||||
|
forward only emailadmin hu továbbítás csak ide
|
||||||
|
global options emailadmin hu Globális opciók
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin hu SSL vagy TLS használatához a PHP openssl kiterjesztését telepíteni kell.
|
||||||
|
imap admin password admin hu IMAP adminisztrátor jelszava
|
||||||
|
imap admin user admin hu IMAP adminisztrátor felhasználóneve
|
||||||
|
imap c-client version < 2001 emailadmin hu IMAP C-Client verzió < 2001
|
||||||
|
imap server emailadmin hu IMAP szerver
|
||||||
|
imap server closed the connection. emailadmin hu Az IMAP szerver lezárta a kapcsolatot.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin hu Az IMAP szerver lezárta a kapcsolatot: %s
|
||||||
|
imap server hostname or ip address emailadmin hu IMAP szerver hosztneve vagy IP címe
|
||||||
|
imap server logintyp emailadmin hu IMAP szerver bejelentkezési típusa
|
||||||
|
imap server name emailadmin hu IMAP szerver neve
|
||||||
|
imap server port emailadmin hu IMAP szerver portja
|
||||||
|
imap/pop3 server name emailadmin hu IMAP/POP3 szerver neve
|
||||||
|
importance emailadmin hu Fontosság
|
||||||
|
in mbyte emailadmin hu MBájtban
|
||||||
|
inactive emailadmin hu inaktív
|
||||||
|
ldap basedn emailadmin hu LDAP basedn
|
||||||
|
ldap server emailadmin hu LDAP szerver
|
||||||
|
ldap server accounts dn emailadmin hu LDAP szerver accounts DN
|
||||||
|
ldap server admin dn emailadmin hu LDAP szerver admin DN
|
||||||
|
ldap server admin password emailadmin hu LDAP szerver adminisztrátorának jelszava
|
||||||
|
ldap server hostname or ip address emailadmin hu LDAP szerver hosztneve vagy IP címe
|
||||||
|
ldap settings emailadmin hu LDAP beállítások
|
||||||
|
leave empty for no quota emailadmin hu hagyja üresen a kvóta figyelmen kívül hagyásához
|
||||||
|
mail settings admin hu Levelezési beállítások
|
||||||
|
manage stationery templates emailadmin hu Irodaszer minták kezelése
|
||||||
|
name of organisation emailadmin hu Szervezet neve
|
||||||
|
no alternate email address emailadmin hu nincs alternatív email cím
|
||||||
|
no encryption emailadmin hu titkosítás nélkül
|
||||||
|
no forwarding email address emailadmin hu nincs továbbküldési email cím
|
||||||
|
no message returned. emailadmin hu Nincs visszaadott üzenet.
|
||||||
|
no plain text part found emailadmin hu nem található egyszerű szöveges tartalom
|
||||||
|
no supported imap authentication method could be found. emailadmin hu Nem található támogatott IMAP hitelesítés.
|
||||||
|
order emailadmin hu Rendezés
|
||||||
|
organisation emailadmin hu Szervezet
|
||||||
|
plesk can't rename users --> request ignored emailadmin hu A Plesk nem tudja átnevezni a felhasználókat -> kérés figyelmen kívül hagyva
|
||||||
|
plesk imap server (courier) emailadmin hu Plesk IMAP Szerver (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin hu Plesk levél szkript '%1' nem található!!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin hu Plesk megköveteli, hogy a jelszó legalább 5 karakter legyen és ne tartalmazza a felhasználói nevet --> jelszó beállítása NEM történt meg!!!
|
||||||
|
plesk smtp-server (qmail) emailadmin hu Plesk SMTP-Szerver (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin hu POP3 szerver hosztneve vagy IP címe
|
||||||
|
pop3 server port emailadmin hu POP3 szerver portja
|
||||||
|
port emailadmin hu portcím
|
||||||
|
postfix with ldap emailadmin hu Postfix LDAP-vel
|
||||||
|
profile access rights emailadmin hu profil elérési jogosultságok
|
||||||
|
profile is active emailadmin hu a profil inaktív
|
||||||
|
profile list emailadmin hu Profil lista
|
||||||
|
profile name emailadmin hu Profilnév
|
||||||
|
qmaildotmode emailadmin hu qmaildotmode
|
||||||
|
quota settings emailadmin hu kvóta beállításai
|
||||||
|
quota size in mbyte emailadmin hu kvóta Mbájtokban
|
||||||
|
remove emailadmin hu eltávolítás
|
||||||
|
reset filter emailadmin hu szűrö törlése
|
||||||
|
select type of imap server emailadmin hu IMAP szerver típusának kiválasztása
|
||||||
|
select type of imap/pop3 server emailadmin hu Válassza ki az IMAP/POP3 szerver típusát
|
||||||
|
select type of smtp server emailadmin hu Válassza ki az SMTP szerver típusát
|
||||||
|
send using this email-address emailadmin hu Küldés erről az e-mail címről
|
||||||
|
server settings emailadmin hu Szerver beállítások
|
||||||
|
sieve server hostname or ip address emailadmin hu Sieve szerver hosztneve vagy IP címe
|
||||||
|
sieve server port emailadmin hu Sieve szerver port
|
||||||
|
sieve settings emailadmin hu SIEVE beállítások
|
||||||
|
smtp authentication emailadmin hu SMTP azonosítás
|
||||||
|
smtp options emailadmin hu SMTP opciók
|
||||||
|
smtp server name emailadmin hu SMTP szerver neve
|
||||||
|
smtp settings emailadmin hu SMTP beállítások
|
||||||
|
smtp-server hostname or ip address emailadmin hu SMTP szerver hosztneve vagy IP címe
|
||||||
|
smtp-server port emailadmin hu SMTP szerver portja
|
||||||
|
standard emailadmin hu Szabványos
|
||||||
|
standard imap server emailadmin hu Szabványos IMAP-kiszolgáló
|
||||||
|
standard pop3 server emailadmin hu Szabványos POP3-kiszolgáló
|
||||||
|
standard smtp-server emailadmin hu Szabványos SMTP-kiszolgáló
|
||||||
|
stationery emailadmin hu Irodaszer
|
||||||
|
templates emailadmin hu Sablonok
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin hu Az IMAP szerver úgy tűnik nem támogatja a kiválasztott hitelesítést. Lépjen kapcsolatba az adminisztrátorral.
|
||||||
|
the mimeparser can not parse this message. emailadmin hu A MIME feldolgozó nem tudta feldolgozni ezt az üzenetet.
|
||||||
|
this php has no imap support compiled in!! emailadmin hu A használt PHP verzió nem tartalmaz IMAP támogatást! (telepíteni kell)
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin hu TLS kapcsolat használatához legalább PHP 5.1.0-val kell rendelkeznie.
|
||||||
|
unexpected response from server to authenticate command. emailadmin hu Váratlan válasz a szervertől az AUTHENTICATE parancsra.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin hu Váratlan válasz a szervertől a Digest-MD5 parancsra.
|
||||||
|
unexpected response from server to login command. emailadmin hu Váratlan válasz a szervertől a LOGIN parancsra.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin hu Váratlan válasz a szervertől: %s
|
||||||
|
unsupported action '%1' !!! emailadmin hu Nem támogatott művelet '%1' !!!
|
||||||
|
update current email address: emailadmin hu Jelenlegi email cím frissítése:
|
||||||
|
use default emailadmin hu Használja az alapértelmezettet
|
||||||
|
use ldap defaults emailadmin hu használja az LDAP alapbeállításokat
|
||||||
|
use predefined username and password defined below emailadmin hu Használd a lent megadott felhasználónevet és jelszót
|
||||||
|
use smtp auth emailadmin hu SMTP hitelesítés használata
|
||||||
|
use tls authentication emailadmin hu TLS hitelesítés használata
|
||||||
|
use tls encryption emailadmin hu TLS kódolás használata
|
||||||
|
user can edit forwarding address emailadmin hu Felhasználó szerkesztheti a továbbításkor a címeket
|
||||||
|
username (standard) emailadmin hu felhasználó név (standard)
|
||||||
|
username/password defined by admin emailadmin hu Az adminisztrátok által meghatározott felhasználó és jelszó
|
||||||
|
username@domainname (virtual mail manager) emailadmin hu felhasználónév@tartománynév (Virtual MAIL ManaGeR)
|
||||||
|
users can define their own emailaccounts emailadmin hu A felhasználók saját maguk állíthatják be az email postafiókjaikat
|
||||||
|
users can define their own identities emailadmin hu A felhasználók beállíthatják a saját azonosítójukat
|
||||||
|
users can define their own signatures emailadmin hu A felhasználók beállíthatják a saját aláírásukat
|
||||||
|
users can utilize these stationery templates emailadmin hu A felhasználók alkalmazhatják az irodaszer mintákat
|
||||||
|
virtual mail manager emailadmin hu Virtuális MAIL ManaGeR
|
||||||
|
you have received a new message on the emailadmin hu Új üzenet érkezett a
|
||||||
|
your name emailadmin hu Az ön neve
|
||||||
|
@ -334,3 +334,102 @@ view this user admin id lihat pengguna ini
|
|||||||
view user account admin id Lihat akoun pengguna
|
view user account admin id Lihat akoun pengguna
|
||||||
xml-rpc admin id XML-RPC
|
xml-rpc admin id XML-RPC
|
||||||
your session could not be verified. admin id Sesi anda tidak dapat diperiksa.
|
your session could not be verified. admin id Sesi anda tidak dapat diperiksa.
|
||||||
|
%1 entries deleted. emailadmin id %1 entri dihapus.
|
||||||
|
(no subject) emailadmin id (tanpa subyek)
|
||||||
|
account '%1' not found !!! emailadmin id Akoun '%1' tidak ditemukan !!!
|
||||||
|
active templates emailadmin id Templat yang aktif
|
||||||
|
add new email address: emailadmin id Tambah alamat email baru:
|
||||||
|
add profile emailadmin id Tambah Profil
|
||||||
|
admin dn emailadmin id Admin dn
|
||||||
|
admin password emailadmin id Password Admin
|
||||||
|
admin username emailadmin id Nama Admin
|
||||||
|
advanced options emailadmin id Opsi Canggih
|
||||||
|
alternate email address emailadmin id Alamat email pengganti
|
||||||
|
any application emailadmin id Semua aplikasi
|
||||||
|
any group emailadmin id Semua kelompok
|
||||||
|
any user emailadmin id semua pengguna
|
||||||
|
back to admin/grouplist emailadmin id Kembali ke Admin/Daftar Kelompok
|
||||||
|
back to admin/userlist emailadmin id Kembali ke Admin/Daftar pengguna
|
||||||
|
bad login name or password. emailadmin id Nama atau password tidak benar.
|
||||||
|
continue emailadmin id Lanjutkan
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin id Could not open secure connection to the IMAP server. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin id CRAM-MD5 or DIGEST-MD5 requires the Auth_SASL package to be installed.
|
||||||
|
cyrus imap server emailadmin id Server Cyrus IMAP
|
||||||
|
cyrus imap server administration emailadmin id Administrasi server Cyrus IMAP
|
||||||
|
default emailadmin id bawaan
|
||||||
|
deliver extern emailadmin id pengiriman eksternal
|
||||||
|
domainname emailadmin id Nama Domain
|
||||||
|
edit email settings emailadmin id Edit pengaturan email
|
||||||
|
email account active emailadmin id Akoun Email aktif
|
||||||
|
email address emailadmin id Alamat Email
|
||||||
|
email settings common id Pengaturan Email
|
||||||
|
emailadmin emailadmin id AdminEMail
|
||||||
|
emailadmin: group assigned profile common id AdminEMail: Profil menurut kelompok
|
||||||
|
emailadmin: user assigned profile common id AdminEMail: Profil menurut pengguna
|
||||||
|
enable sieve emailadmin id Bolehkan Sieve
|
||||||
|
encrypted connection emailadmin id koneksi ter-enkripsi
|
||||||
|
encryption settings emailadmin id Pengaturan Enkripsi
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin id Berikan nama domain email anda (dari: pengguna@domain)
|
||||||
|
entry saved emailadmin id Entri disimpan
|
||||||
|
error saving account! emailadmin id Error menyimpan akoun!
|
||||||
|
error saving the entry!!! emailadmin id Error saving the entry!!!
|
||||||
|
event details follow emailadmin id Berikut adalah detil Kegiatan
|
||||||
|
filtered by account emailadmin id saringan menurut Akoun
|
||||||
|
filtered by group emailadmin id saringan menurut Kelompok
|
||||||
|
forward only emailadmin id Hanya Forward
|
||||||
|
global options emailadmin id Opsi Global
|
||||||
|
imap admin password admin id password admin IMAP
|
||||||
|
imap admin user admin id admin IMAP
|
||||||
|
imap c-client version < 2001 emailadmin id IMAP C-Client Version < 2001
|
||||||
|
imap server emailadmin id IMAP Server
|
||||||
|
importance emailadmin id Importance
|
||||||
|
in mbyte emailadmin id dalam MByte
|
||||||
|
inactive emailadmin id tidak aktif
|
||||||
|
ldap basedn emailadmin id LDAP basedn
|
||||||
|
ldap server emailadmin id LDAP server
|
||||||
|
ldap settings emailadmin id Pengaturan LDAP
|
||||||
|
leave empty for no quota emailadmin id kosongkan bila tanpa kuota
|
||||||
|
mail settings admin id Pengaturan Mail
|
||||||
|
name of organisation emailadmin id Nama Organisasi
|
||||||
|
no alternate email address emailadmin id tanpa alamat email pengganti
|
||||||
|
no encryption emailadmin id tanpa enkripsi
|
||||||
|
order emailadmin id Urutan
|
||||||
|
organisation emailadmin id Organisasi
|
||||||
|
port emailadmin id port
|
||||||
|
postfix with ldap emailadmin id Postfix with LDAP
|
||||||
|
profile list emailadmin id Daftar Profil
|
||||||
|
profile name emailadmin id Nama Profil
|
||||||
|
qmaildotmode emailadmin id qmaildotmode
|
||||||
|
quota settings emailadmin id Pengaturan Kuota
|
||||||
|
quota size in mbyte emailadmin id ukuran kuota dalam MByte
|
||||||
|
remove emailadmin id Buang
|
||||||
|
reset filter emailadmin id ulangi penyaringan
|
||||||
|
select type of imap server emailadmin id Pilih tipe Server IMAP
|
||||||
|
select type of imap/pop3 server emailadmin id Pilih tipe Server IMAP/POP3
|
||||||
|
select type of smtp server emailadmin id Pilih tipe Server SMTP
|
||||||
|
send using this email-address emailadmin id kirim menggunakan alamat eMail ini
|
||||||
|
server settings emailadmin id Pengaturan Server
|
||||||
|
sieve server hostname or ip address emailadmin id Sieve server hostname or ip address
|
||||||
|
sieve server port emailadmin id Sieve server port
|
||||||
|
sieve settings emailadmin id Pengaturan Sieve
|
||||||
|
smtp authentication emailadmin id Otentikasi SMTP
|
||||||
|
smtp options emailadmin id Opsi SMTP
|
||||||
|
smtp server name emailadmin id Nama server SMTP
|
||||||
|
smtp settings emailadmin id Pengaturan SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin id Nama atau alamat IP server SMTP
|
||||||
|
smtp-server port emailadmin id Port server SMTP
|
||||||
|
standard emailadmin id Standar
|
||||||
|
standard imap server emailadmin id Server IMAP Standar
|
||||||
|
standard pop3 server emailadmin id Server POP3 Standar
|
||||||
|
standard smtp-server emailadmin id Server SMTP Standar
|
||||||
|
starts with emailadmin id diawali dengan
|
||||||
|
stationery emailadmin id Stationery
|
||||||
|
templates emailadmin id Templat
|
||||||
|
unexpected response from server to login command. emailadmin id Unexpected response from server to LOGIN command.
|
||||||
|
update current email address: emailadmin id Memperbarui alamat email saat ini:
|
||||||
|
use default emailadmin id Gunakan bawaan
|
||||||
|
username (standard) emailadmin id namapengguna (standar)
|
||||||
|
username/password defined by admin emailadmin id Namapengguna/Password dibuat oleh admin
|
||||||
|
username@domainname (virtual mail manager) emailadmin id username@domainname (Virtual MAIL ManaGeR)
|
||||||
|
virtual mail manager emailadmin id Virtual MAIL ManaGeR
|
||||||
|
your name emailadmin id Your name
|
||||||
|
@ -708,3 +708,213 @@ you need to select some users first! admin it Devi prima selezionare alcuni uten
|
|||||||
you will need to remove the subcategories before you can delete this category admin it E' necessario rimuovere le sotto-categorie prima di cancellare questa categoria
|
you will need to remove the subcategories before you can delete this category admin it E' necessario rimuovere le sotto-categorie prima di cancellare questa categoria
|
||||||
your last submission was less then %1 days ago! admin it Il tuo ultimo invio dati è stato meno di %1 giorni fa!
|
your last submission was less then %1 days ago! admin it Il tuo ultimo invio dati è stato meno di %1 giorni fa!
|
||||||
your session could not be verified. admin it La sessione non può essere verificata.
|
your session could not be verified. admin it La sessione non può essere verificata.
|
||||||
|
%1 entries deleted. emailadmin it %1 inserimenti cancellati
|
||||||
|
(imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver) emailadmin it (imapclass deve supportare questa funzionalità interrogando il valore corrispondente in configurazione e passandolo come defaultquota al server imap)
|
||||||
|
(no subject) emailadmin it (nessun oggetto)
|
||||||
|
account '%1' not found !!! emailadmin it Account '%1' non trovato !!!
|
||||||
|
account deleted. emailadmin it Account cancellato
|
||||||
|
account not found! common it Account non trovato!
|
||||||
|
account saved. emailadmin it Account salvato.
|
||||||
|
active templates emailadmin it Modelli attivi
|
||||||
|
add new email address: emailadmin it Aggiungi un nuovo indirizzo di posta elettronica
|
||||||
|
add profile emailadmin it Aggiungi Profilo
|
||||||
|
admin dn emailadmin it dn amministratore
|
||||||
|
admin password emailadmin it password amministratore
|
||||||
|
admin username emailadmin it username amministratore
|
||||||
|
advanced options emailadmin it opzioni avanzate
|
||||||
|
alternate email address emailadmin it indirizzo email alternativo
|
||||||
|
and logged in emailadmin it e collegato
|
||||||
|
any application emailadmin it ogni applicazione
|
||||||
|
any group emailadmin it ogni gruppo
|
||||||
|
any user emailadmin it Qualsiasi utente
|
||||||
|
back to admin/grouplist emailadmin it Indietro alla lista Admin / Group
|
||||||
|
back to admin/userlist emailadmin it Indietro alla lista Admin / User
|
||||||
|
bad login name or password. emailadmin it Nome utente o password errati.
|
||||||
|
bad or malformed request. server responded: %s emailadmin it Richiesta errata o mal composta. Il Server ha risposto: %s
|
||||||
|
bad request: %s emailadmin it Richiesta errata: %s
|
||||||
|
can be used by application emailadmin it può essere usato da applicazione
|
||||||
|
can be used by group emailadmin it può essere usato da gruppo
|
||||||
|
can be used by user emailadmin it può essere usato dall'utente
|
||||||
|
connection dropped by imap server. emailadmin it Connessione interrotta dal sever IMAP.
|
||||||
|
connection is not secure! everyone can read eg. your credentials. emailadmin it La connessione NON è sicura! Chiunque può leggere, per esempio, le tue credenziali
|
||||||
|
continue emailadmin it Continua
|
||||||
|
could not append message: emailadmin it Impossibile accodare il Messaggio:
|
||||||
|
could not complete request. reason given: %s emailadmin it Impossibile completare la richiesta. Motivazione data: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin it Non è possibile aprire una connessione sicura al server IMAP. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin it CRAM-MD5 o DIGEST-MD5 richiede che il pacchetto Auth_SASL sia installato.
|
||||||
|
create new account emailadmin it Crea un nuovo Account
|
||||||
|
create new identity emailadmin it Crea una nuova identità
|
||||||
|
cyrus imap server emailadmin it Server IMAP Cyrus
|
||||||
|
cyrus imap server administration emailadmin it Amministrazione Server IMAP Cyrus
|
||||||
|
default emailadmin it predefinito
|
||||||
|
delete identity emailadmin it Cancella identità
|
||||||
|
delete this account emailadmin it Cancella questo account
|
||||||
|
deliver extern emailadmin it Consegna esterna
|
||||||
|
displaying html messages is disabled emailadmin it la visualizzazione html dei messaggi è disabilitata
|
||||||
|
displaying plain messages is disabled emailadmin it la visualizzazione semplice dei messaggi è disabilitata
|
||||||
|
do not validate certificate emailadmin it Non convalidare il certificato
|
||||||
|
do you really want to delete this profile emailadmin it Vuoi davvero cancellare questo profilo?
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin it Vuoi davvero reimpostare il filtro per l'elenco dei profili?
|
||||||
|
domainname emailadmin it nome dominio
|
||||||
|
edit email settings emailadmin it modifica impostazioni email
|
||||||
|
email account active emailadmin it account email attivo
|
||||||
|
email address emailadmin it indirizzo email
|
||||||
|
email settings common it Impostazioni email
|
||||||
|
emailadmin emailadmin it Gestione Email
|
||||||
|
emailadmin: group assigned profile common it eMailAdmin: Profilo assegnato al gruppo
|
||||||
|
emailadmin: user assigned profile common it eMailAdmin: Profilo assegnato all'utente
|
||||||
|
enable cyrus imap server administration emailadmin it abilita amministrazione Server IMAP Cyrus
|
||||||
|
enable sieve emailadmin it abilita Sieve
|
||||||
|
encrypted connection emailadmin it Connessione criptata
|
||||||
|
encryption settings emailadmin it impostazioni cifratura
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin it Inserisci il tuo dominio di posta predefinito (da: utente@dominio)
|
||||||
|
entry saved emailadmin it Inserimento salvato
|
||||||
|
error connecting to imap server. %s : %s. emailadmin it Errore in connessione al server IMAP. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin it Errore in connessione al server IMAP: [%s] %s.
|
||||||
|
error deleting entry! emailadmin it Errore durante l'eliminazione dell'inserimento!
|
||||||
|
error saving account! emailadmin it Errore nel salvataggio dell'account
|
||||||
|
error saving the entry!!! emailadmin it Errore durante il salvataggio dell'inserimento
|
||||||
|
error, no username! emailadmin it Errore, nessun nome utente!
|
||||||
|
event details follow emailadmin it Errore, manca il nome utente
|
||||||
|
failed to delete account! emailadmin it Errore nella cancellazione dell'account
|
||||||
|
file rejected, no %2. is:%1 emailadmin it File rifiutato, non %2. è: %1
|
||||||
|
filtered by account emailadmin it Filtrati per account
|
||||||
|
filtered by group emailadmin it Filtrati per gruppo
|
||||||
|
forward also to emailadmin it Inoltra anche a
|
||||||
|
forward email's to emailadmin it Inoltra email a
|
||||||
|
forward only emailadmin it Inoltra solo
|
||||||
|
forward only disables imap mailbox / storing of mails and just forwards them to given address. emailadmin it L'inoltro esclusivo disabilita l'archiviazione delle email degli account IMAP e si limita ad inoltrarle all'indirizzo specificato.
|
||||||
|
global options emailadmin it Opzioni globali
|
||||||
|
hostname or ip emailadmin it Nome del computer o indirizzo IP
|
||||||
|
how username get constructed emailadmin it Come viene costruito il nome utente
|
||||||
|
identity deleted emailadmin it Identità cancellata
|
||||||
|
identity saved. emailadmin it identità salvata
|
||||||
|
if different from email address emailadmin it se diverso dall'indirizzo email
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin it Se stai usando SSL oppure TLS, devi aver caricato l'estensione SSL in PHP
|
||||||
|
if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that) emailadmin it se viene indicata la porta 5190 come porta del server sieve, verrà abilitato SSL per sieve (il serve deve supportarlo)
|
||||||
|
imap admin password admin it Password amministratore IMAP
|
||||||
|
imap admin user admin it User amministratore IMAP
|
||||||
|
imap c-client version < 2001 emailadmin it Versione C-Cliente < 2001
|
||||||
|
imap server emailadmin it Server IMAP
|
||||||
|
imap server closed the connection. emailadmin it Il server IMAP ha chiuso la connessione
|
||||||
|
imap server closed the connection. server responded: %s emailadmin it Il server IMAP ha chiuso la connessione. Risposta del server: %s
|
||||||
|
imap server hostname or ip address emailadmin it Nome Host o IP del server IMAP
|
||||||
|
imap server logintyp emailadmin it Tipo login server IMAP
|
||||||
|
imap server name emailadmin it Nome del server IMAP
|
||||||
|
imap server port emailadmin it Porta server IMAP
|
||||||
|
imap/pop3 server name emailadmin it Nome server IMAP/POP3
|
||||||
|
importance emailadmin it importanza
|
||||||
|
in mbyte emailadmin it in MByte
|
||||||
|
inactive emailadmin it Inattivo
|
||||||
|
ldap basedn emailadmin it LDAP basedn
|
||||||
|
ldap server emailadmin it server LDAP
|
||||||
|
ldap server accounts dn emailadmin it DN account server LDAP
|
||||||
|
ldap server admin dn emailadmin it DN amministratore server LDAP
|
||||||
|
ldap server admin password emailadmin it password amministratore server LDAP
|
||||||
|
ldap server hostname or ip address emailadmin it Nome host o IP server LDAP
|
||||||
|
ldap settings emailadmin it impostazioni LDAP
|
||||||
|
leave empty for no quota emailadmin it lascia vuoto per nessuna quota
|
||||||
|
mail settings admin it Impostazioni Posta
|
||||||
|
manage stationery templates emailadmin it Amministra i modelli
|
||||||
|
manual entry emailadmin it Inserimento manuale
|
||||||
|
mb used emailadmin it MB utilizzati
|
||||||
|
name of organisation emailadmin it Nome dell'organizzazione
|
||||||
|
no alternate email address emailadmin it nessun indirizzo email alternativo
|
||||||
|
no encryption emailadmin it Nessuna cifratura
|
||||||
|
no forwarding email address emailadmin it nessun indirizzo email di inoltro
|
||||||
|
no message returned. emailadmin it nessun messaggio ricevuto
|
||||||
|
no plain text part found emailadmin it non è stata trovata una parte in testo semplice
|
||||||
|
no sieve support detected, either fix configuration manually or leave it switched off. emailadmin it Non è stato rilevato il supporto per sieve, verificare la configurazione manualmente o disabilitarlo.
|
||||||
|
no supported imap authentication method could be found. emailadmin it Non è stato trovato alcun metodo di autenticazione supportato da IMAP
|
||||||
|
order emailadmin it ordine
|
||||||
|
organisation emailadmin it organizzazione
|
||||||
|
plesk can't rename users --> request ignored emailadmin it Plesk non può rinominare gli utenti --> richiesta ignorata
|
||||||
|
plesk imap server (courier) emailadmin it IMAP server Plesk (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin it Script Plesk '%1' non trovato
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin it Plesk richiede password con almeno 5 caratteri e che non deve contenere il nome account --> password NON impostata
|
||||||
|
plesk smtp-server (qmail) emailadmin it Server SMTP Plesk (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin it Nome host o IP server POP3
|
||||||
|
pop3 server port emailadmin it porta server POP3
|
||||||
|
port emailadmin it Porta
|
||||||
|
postfix with ldap emailadmin it Postfix con LDAP
|
||||||
|
processing of file %1 failed. failed to meet basic restrictions. emailadmin it Elaborazione del file %1 fallita. Non sono rispettate le restrizioni di base
|
||||||
|
profile access rights emailadmin it diritti di accesso profilo
|
||||||
|
profile is active emailadmin it Il profilo è attivo
|
||||||
|
profile list emailadmin it Elenco Profili
|
||||||
|
profile name emailadmin it Nome Profilo
|
||||||
|
qmaildotmode emailadmin it qmaildotmode
|
||||||
|
quota settings emailadmin it impostazioni quota
|
||||||
|
quota size in mbyte emailadmin it dimensione quota in MByte
|
||||||
|
relay access checked emailadmin it Accesso Relay verificato
|
||||||
|
remove emailadmin it rimuovi
|
||||||
|
required pear class mail/mimedecode.php not found. emailadmin it Non è stata trovata la classe PEAR Mail/mimeDecode.php
|
||||||
|
reset filter emailadmin it Reimposta filtro
|
||||||
|
save of message %1 failed. could not save message to folder %2 due to: %3 emailadmin it Salvataggio del messaggio %1 fallito. Non è possibile salvare messaggi nella cartella %2 in quanto %3
|
||||||
|
saving of message %1 failed. destination folder %2 does not exist. emailadmin it Salvataggio del messaggio %1 fallito. La cartella di destinazione %2 non esiste.
|
||||||
|
secure connection emailadmin it Connessione sicura
|
||||||
|
select type of imap server emailadmin it Seleziona il tipo di server IMAP
|
||||||
|
select type of imap/pop3 server emailadmin it Seleziona il tipo si server IMAP/POP3
|
||||||
|
select type of smtp server emailadmin it Seleziona il tipo di server SMTP
|
||||||
|
send using this email-address emailadmin it Invia utilizzando questo indirizzo email
|
||||||
|
server settings emailadmin it impostazioni server
|
||||||
|
sieve server hostname or ip address emailadmin it Nome host o IP server Sieve
|
||||||
|
sieve server port emailadmin it porta server Sieve
|
||||||
|
sieve settings emailadmin it impostazioni SIeve
|
||||||
|
skip imap emailadmin it Salta IMAP
|
||||||
|
skipping imap configuration! emailadmin it Salta la configurazione IMAP
|
||||||
|
smtp authentication emailadmin it autenticazione smtp
|
||||||
|
smtp options emailadmin it opzioni smtp
|
||||||
|
smtp server emailadmin it Server SMT (posta in uscita)
|
||||||
|
smtp server name emailadmin it nome server SMTP
|
||||||
|
smtp settings emailadmin it impostazioni smtp
|
||||||
|
smtp-server hostname or ip address emailadmin it Nome host o IP server SMTP
|
||||||
|
smtp-server port emailadmin it porta server SMTP
|
||||||
|
standard emailadmin it Standard
|
||||||
|
standard identity emailadmin it Identità di base
|
||||||
|
standard imap server emailadmin it Server IMAP standard
|
||||||
|
standard pop3 server emailadmin it Server POP3 standard
|
||||||
|
standard smtp-server emailadmin it Server SMTP standard
|
||||||
|
starts with emailadmin it Comincia con
|
||||||
|
stationery emailadmin it Modeillo
|
||||||
|
successful connected to %1 server%2. emailadmin it Connessione avvenuta con success a %1 server %2.
|
||||||
|
switch back to standard identity to save account. emailadmin it Ritornare all'identità standard per conservare l'account
|
||||||
|
switch back to standard identity to save other account data. emailadmin it Ritornare all'identità standard per conservare gli altri dati dell'account
|
||||||
|
templates emailadmin it Modelli
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin it Il server IMAP sembra non supportare il metodo di autenticazione scelto. Contatta il tuo amministratore di sistema.
|
||||||
|
the mimeparser can not parse this message. emailadmin it Il parser MIME non riesce ad elaborare questo messaggio
|
||||||
|
this is not a personal mail account!\n\naccount will be deleted for all users!\n\nare you really sure you want to do that? emailadmin it Questo non è un account personale di email!\n\nL'account verrà cancellato per TUTTI gli utenti!\n\nConfermi?
|
||||||
|
this php has no imap support compiled in!! emailadmin it PHP non è stato compilato con supporto IMAP!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin it Per utilizzare una connessione TLS devi utilizzare una versione PHP 5.1.0 o superiore
|
||||||
|
unexpected response from server to authenticate command. emailadmin it Risposta inaspettata dal server al comando AUTHENTICATE
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin it Risposta inaspettata dal server alla risposta Digest-MD5
|
||||||
|
unexpected response from server to login command. emailadmin it Risposta inaspettata dal server al comando LOGIN
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin it Riposta non riconosciuta dal server IMAP %s
|
||||||
|
unsupported action '%1' !!! emailadmin it Azione non supportata '%1' !!!
|
||||||
|
update current email address: emailadmin it Aggiorna l'indirizzo email attuale:
|
||||||
|
use default emailadmin it Usa il predefinito
|
||||||
|
use ldap defaults emailadmin it usa predefiniti LDAP
|
||||||
|
use predefined username and password defined below emailadmin it Utilizza il nome utente e la password definiti qui sotto
|
||||||
|
use smtp auth emailadmin it usa autenticazione SMTP
|
||||||
|
use tls authentication emailadmin it usa autenticazione TLS
|
||||||
|
use tls encryption emailadmin it usa crittografia TLS
|
||||||
|
use users email-address (as seen in useraccount) emailadmin it Utilizza l'indirizzo email come impostato nell'account utente
|
||||||
|
user can edit forwarding address emailadmin it l'utente può modificare indirizzo di inoltro
|
||||||
|
userid@domain eg. u1234@domain emailadmin it UserId@dominio p.es. u1234@dominio
|
||||||
|
username (standard) emailadmin it Nome utente (standard)
|
||||||
|
username specified below for all emailadmin it Nome utente specificato per tutti
|
||||||
|
username/password defined by admin emailadmin it Nome utente / password definiti dall'amministratore
|
||||||
|
username@domainname (virtual mail manager) emailadmin it nomeutente@nome dominio (ManaGeR MAIL Virtuale)
|
||||||
|
users can define their own emailaccounts emailadmin it Gli utenti possono definire i propri account email
|
||||||
|
users can define their own identities emailadmin it Gli utenti possono definire le loro identità personali
|
||||||
|
users can define their own signatures emailadmin it Gli utenti possono definire le loro firme personali
|
||||||
|
users can utilize these stationery templates emailadmin it Gli utenti possono utilizzare questi modelli
|
||||||
|
using data from mozilla ispdb for provider %1 emailadmin it Utilizzo dei dati da Mozilla ISPDB per il provider %1
|
||||||
|
vacation messages with start- and end-date require an admin account to be set emailadmin it Il messaggio di assenza (ferie) con data inizio e data fine richiede che sia impostato un account di amministratore
|
||||||
|
virtual mail manager emailadmin it ManaGeR MAIL Virtuale
|
||||||
|
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin it Sì, utilizza le credenziali sottostanti solo per allarmi e notifiche, altrimenti usa le credenziali dell'utente attuale
|
||||||
|
yes, use credentials of current user or if given credentials below emailadmin it Sì, utilizza le credenziali dell'utente attuale oppure, se date, e credenziali qui sotto
|
||||||
|
you can use wizard to fix account settings or delete account. emailadmin it Si può usare il wizard (procedura guidata) per riparare le impostazioni o eliminare un account
|
||||||
|
you have received a new message on the emailadmin it Hai ricevuto un nuovo messaggio sul
|
||||||
|
you need to specify a forwarding address, when checking "%1"! emailadmin it Bisogna specificare un indirizzo di inoltro, quando si contolla "%1""
|
||||||
|
your message to %1 was displayed. emailadmin it Il tuo messaggio per %1 è stato visualizzato
|
||||||
|
your name emailadmin it Il tuo nome
|
||||||
|
@ -425,3 +425,80 @@ you must enter an application title. admin iw עליך לציין כותרת ל
|
|||||||
you must select a file type admin iw עליך לבחור סןג קובץ
|
you must select a file type admin iw עליך לבחור סןג קובץ
|
||||||
you will need to remove the subcategories before you can delete this category admin iw !עליך להסיר את תתי-הקטגוריות לפני שאפשר יהיה למחוק קטגוריה זו
|
you will need to remove the subcategories before you can delete this category admin iw !עליך להסיר את תתי-הקטגוריות לפני שאפשר יהיה למחוק קטגוריה זו
|
||||||
your session could not be verified. admin iw .לא הצלחתי לשחזר את המושב
|
your session could not be verified. admin iw .לא הצלחתי לשחזר את המושב
|
||||||
|
(no subject) emailadmin iw (ללא נושא)
|
||||||
|
add profile emailadmin iw הוסף פרופיל
|
||||||
|
admin dn emailadmin iw של המנהל dn
|
||||||
|
admin password emailadmin iw סיסמת מנהל
|
||||||
|
admin username emailadmin iw שם משתמש של המנהל
|
||||||
|
advanced options emailadmin iw אופציות מתקדמות
|
||||||
|
alternate email address emailadmin iw כתובת דואר אלקטרוני חילופי
|
||||||
|
continue emailadmin iw המשך
|
||||||
|
cyrus imap server emailadmin iw Cyrus IMAP שרת
|
||||||
|
cyrus imap server administration emailadmin iw Cyrus IMAP ניהול שרת
|
||||||
|
default emailadmin iw ברירת מחדל
|
||||||
|
deliver extern emailadmin iw מסירה חיצונית
|
||||||
|
do you really want to delete this profile emailadmin iw בטוח שברצונך למחוק פרופיל זה
|
||||||
|
domainname emailadmin iw שם הדומיין
|
||||||
|
edit email settings emailadmin iw ערוך הגדרות דואר אלקטרוני
|
||||||
|
email account active emailadmin iw חשבון דואר אלקטרוני פעיל
|
||||||
|
email address emailadmin iw כתובת דואר אלקטרוני
|
||||||
|
enable cyrus imap server administration emailadmin iw Cyrus IMAP איפשור ניהול שרת
|
||||||
|
enable sieve emailadmin iw Sieve אישפור
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin iw (user@domain :ציין את דומיין דואר המחדלי שלך (לדוגמא
|
||||||
|
entry saved emailadmin iw הרשומה נשמרה
|
||||||
|
event details follow emailadmin iw פרטי האירוע בהמשך
|
||||||
|
forward also to emailadmin iw להעביר גם אל
|
||||||
|
forward email's to emailadmin iw להעביר דואר אלקטרוני אל
|
||||||
|
forward only emailadmin iw העבר בלבד
|
||||||
|
imap admin password admin iw IMAP סיסמת ניהול
|
||||||
|
imap admin user admin iw IMAP שם מנהל
|
||||||
|
imap c-client version < 2001 emailadmin iw IMAP C-Client Version < 2001
|
||||||
|
imap server emailadmin iw שרת IMAP
|
||||||
|
imap server hostname or ip address emailadmin iw שלו IP- או כתובת הIMAP שם שרת
|
||||||
|
imap server logintyp emailadmin iw IMAP סוג כניסה לשרת
|
||||||
|
imap server port emailadmin iw IMAP פורט שרת
|
||||||
|
imap/pop3 server name emailadmin iw IMAP/POP3 שם שרת
|
||||||
|
in mbyte emailadmin iw MB-ב
|
||||||
|
ldap basedn emailadmin iw dn הביסי של LDAP
|
||||||
|
ldap server emailadmin iw LDAP שרת
|
||||||
|
ldap server accounts dn emailadmin iw LDAP של שרת חשבונות DN
|
||||||
|
ldap server admin dn emailadmin iw LDAP מנהל שרת של DN
|
||||||
|
ldap server admin password emailadmin iw LDAP סיסמה של מנהל שרת
|
||||||
|
ldap server hostname or ip address emailadmin iw IP או כתובת LDAP שם שרת
|
||||||
|
ldap settings emailadmin iw LDAP הגדרות
|
||||||
|
leave empty for no quota emailadmin iw השאר ריק ללא הקצאה
|
||||||
|
mail settings admin iw הגדרות דואר
|
||||||
|
name of organisation emailadmin iw שם האירגון
|
||||||
|
no alternate email address emailadmin iw אין כתובת דואר אלקטרוני חלופי
|
||||||
|
no forwarding email address emailadmin iw אין כתובת להעברת דואר אלקטרוני
|
||||||
|
order emailadmin iw סדר
|
||||||
|
organisation emailadmin iw אירגון
|
||||||
|
pop3 server hostname or ip address emailadmin iw IP או כתובת pop3 שם שרת
|
||||||
|
pop3 server port emailadmin iw POP3 פורט שרת
|
||||||
|
postfix with ldap emailadmin iw LDAP עם Postfix
|
||||||
|
profile list emailadmin iw רשימת פרופילים
|
||||||
|
profile name emailadmin iw שם פרופיל
|
||||||
|
qmaildotmode emailadmin iw qmaildotmode
|
||||||
|
quota settings emailadmin iw הגדרות הקצאה
|
||||||
|
remove emailadmin iw הסר
|
||||||
|
select type of imap/pop3 server emailadmin iw IMAP/POP3 בחר סוג שרת
|
||||||
|
select type of smtp server emailadmin iw SMTP בחר סוג שרת
|
||||||
|
sieve server hostname or ip address emailadmin iw IP או כתובת Sieve שם שרת
|
||||||
|
sieve server port emailadmin iw Sieve פורט שרת
|
||||||
|
sieve settings emailadmin iw Sieve הגדרות
|
||||||
|
smtp server name emailadmin iw SMTP שם שרת
|
||||||
|
smtp settings emailadmin iw הגדרות SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin iw IP או כתובת SMTP שם שרת
|
||||||
|
smtp-server port emailadmin iw SMTP פורת שרת
|
||||||
|
standard emailadmin iw תקני
|
||||||
|
standard imap server emailadmin iw תקני IMAP שרת
|
||||||
|
standard pop3 server emailadmin iw תקני POP3 שרת
|
||||||
|
standard smtp-server emailadmin iw תקני SMTP שרת
|
||||||
|
use default emailadmin iw השתמש בברירת המחדל
|
||||||
|
use ldap defaults emailadmin iw LDAP השתמש בברירות מחדל של
|
||||||
|
use smtp auth emailadmin iw LDAP השתמש באימות משתמשים של
|
||||||
|
use tls authentication emailadmin iw TLS השתמש באימות
|
||||||
|
use tls encryption emailadmin iw TLS השתמש בהצפנת
|
||||||
|
users can define their own emailaccounts emailadmin iw משתמשים יכולים להגדיר בעצמם את חשבונות דואר האלקטרוני שלהם
|
||||||
|
virtual mail manager emailadmin iw מלהל דואר וירטואלי
|
||||||
|
your name emailadmin iw השם שלך
|
||||||
|
@ -213,3 +213,10 @@ you must enter a group name. admin ja グループ名を入力して下さい。
|
|||||||
you must enter an application name and title. admin ja アプリケーション名とタイトルを入力して下さい。
|
you must enter an application name and title. admin ja アプリケーション名とタイトルを入力して下さい。
|
||||||
you must select a file type admin ja ファイルタイプを選択してください。
|
you must select a file type admin ja ファイルタイプを選択してください。
|
||||||
your session could not be verified. admin ja Your session could not be verified.
|
your session could not be verified. admin ja Your session could not be verified.
|
||||||
|
admin password emailadmin ja パスワード
|
||||||
|
admin username emailadmin ja ユーザID
|
||||||
|
email settings common ja 電子メール設定
|
||||||
|
mail settings admin ja 電子メール設定
|
||||||
|
order emailadmin ja 順序
|
||||||
|
remove emailadmin ja 削除
|
||||||
|
standard emailadmin ja 標準
|
||||||
|
@ -405,3 +405,12 @@ you must enter an application title. admin ko 응용프로그램 제목을 입
|
|||||||
you must select a file type admin ko 파일 타입을 선택해야 합니다.
|
you must select a file type admin ko 파일 타입을 선택해야 합니다.
|
||||||
you will need to remove the subcategories before you can delete this category admin ko 이 카테고리를 삭제하기 전에 하위카테고리를 삭제해야 합니다!
|
you will need to remove the subcategories before you can delete this category admin ko 이 카테고리를 삭제하기 전에 하위카테고리를 삭제해야 합니다!
|
||||||
your session could not be verified. admin ko 세션이 검증되지 않았습니다
|
your session could not be verified. admin ko 세션이 검증되지 않았습니다
|
||||||
|
admin password emailadmin ko 관리자 암호
|
||||||
|
admin username emailadmin ko 관리사용자 이름
|
||||||
|
continue emailadmin ko 계속
|
||||||
|
default emailadmin ko 기본
|
||||||
|
event details follow emailadmin ko ** 다음은 이벤트-설명
|
||||||
|
mail settings admin ko 메일 설정
|
||||||
|
remove emailadmin ko 삭제
|
||||||
|
standard emailadmin ko 기본
|
||||||
|
use default emailadmin ko 기본 사용
|
||||||
|
@ -573,3 +573,30 @@ you need to enter install id and password! admin lo ທ່ານຕ້ອງໃ
|
|||||||
you will need to remove the subcategories before you can delete this category admin lo ທ່ານຕ້ອງລຶບໝວດໝູ່ຍ່ອຍກ່ອນທີ່ຈະລຶບໝວດໝູ່ນີ້
|
you will need to remove the subcategories before you can delete this category admin lo ທ່ານຕ້ອງລຶບໝວດໝູ່ຍ່ອຍກ່ອນທີ່ຈະລຶບໝວດໝູ່ນີ້
|
||||||
your last submission was less then %1 days ago! admin lo ຄັ້ງລ່າສຸດໃນການສົ່ງຢ່າງໜ້ອຍ % 1 ມຶ້ທີ່ຜ່ານມາ
|
your last submission was less then %1 days ago! admin lo ຄັ້ງລ່າສຸດໃນການສົ່ງຢ່າງໜ້ອຍ % 1 ມຶ້ທີ່ຜ່ານມາ
|
||||||
your session could not be verified. admin lo ເຊສຊັ້ນຂອງທ່ານຈະບໍ່ສາມາດຢືນຢັນ
|
your session could not be verified. admin lo ເຊສຊັ້ນຂອງທ່ານຈະບໍ່ສາມາດຢືນຢັນ
|
||||||
|
advanced options emailadmin lo ການຕັ້ງຄ່າແບບພິເສດ
|
||||||
|
alternate email address emailadmin lo ທີ່ຢູ່ email ອື່ນ
|
||||||
|
cyrus imap server emailadmin lo Cyrus IMAP Server
|
||||||
|
default emailadmin lo ຄ່າເລີ່ມຕົ້ນ
|
||||||
|
deliver extern emailadmin lo ສົ່ງ extern
|
||||||
|
edit email settings emailadmin lo ແກ້ໄຂການຕັ້ງຄ່າ email
|
||||||
|
email account active emailadmin lo email ບັນຊີທີ່ໃຊ້ຢູ່
|
||||||
|
email address emailadmin lo ທີ່ຢູ່ email
|
||||||
|
error saving account! emailadmin lo ການບັນທຶກບັນຊີພົບຂໍ້ຜິດພາດ!
|
||||||
|
event details follow emailadmin lo ຕິດຕາມລາຍລະອຽດກິດຈະກໍາ
|
||||||
|
forward also to emailadmin lo ສົ່ງຕໍ່ໄປຫາ
|
||||||
|
forward only emailadmin lo ສົ່ງຕໍ່ເທົ່ານັ້ນ
|
||||||
|
in mbyte emailadmin lo ໃນ Mbyte
|
||||||
|
leave empty for no quota emailadmin lo ອອກຈາກລະບົບສໍາລັບບໍ່ມີໂກຕ້າ
|
||||||
|
mail settings admin lo ຕັ້ງຄ່າ mail
|
||||||
|
no alternate email address emailadmin lo ບໍ່ມີ email ສະຫຼັບກັນ
|
||||||
|
order emailadmin lo Order
|
||||||
|
postfix with ldap emailadmin lo Postfix ດ້ວຍ LDAP
|
||||||
|
qmaildotmode emailadmin lo qmaildotmode
|
||||||
|
quota settings emailadmin lo ໂກຕ້າການຕັ້ງຄ່າ
|
||||||
|
quota size in mbyte emailadmin lo ຂະໜາດໂກຕ້າໃນ ເມກະໄບທ
|
||||||
|
remove emailadmin lo ລຶບອອກ
|
||||||
|
standard emailadmin lo ມາດຕະຖານ
|
||||||
|
standard imap server emailadmin lo ມາດຕະຖານ IMAP ເຊີເວີ້
|
||||||
|
standard pop3 server emailadmin lo ມາດຕະຖານ POP3 ເຊີເວີ້
|
||||||
|
standard smtp-server emailadmin lo ມາດຕະຖານ SMTP-ເຊີເວີ້
|
||||||
|
use default emailadmin lo ໃຊ້ຄ່າເລີ່ມຕົ້ນ
|
||||||
|
@ -419,3 +419,73 @@ you must enter an application title. admin lv Jums jāievada aplikācijas virsra
|
|||||||
you must select a file type admin lv Jums jāizvēlas faila tips
|
you must select a file type admin lv Jums jāizvēlas faila tips
|
||||||
you will need to remove the subcategories before you can delete this category admin lv Tev vajadzēs izdzēst apakšgrpu pirms tu varēsi izdzēst šo kategoriju!
|
you will need to remove the subcategories before you can delete this category admin lv Tev vajadzēs izdzēst apakšgrpu pirms tu varēsi izdzēst šo kategoriju!
|
||||||
your session could not be verified. admin lv Nevarēju Jūs pārbaudīt. Mēģiniet pēc 30sek. vēlreiz.
|
your session could not be verified. admin lv Nevarēju Jūs pārbaudīt. Mēģiniet pēc 30sek. vēlreiz.
|
||||||
|
(no subject) emailadmin lv (nav temata)
|
||||||
|
add profile emailadmin lv Pievienot profilu
|
||||||
|
admin dn emailadmin lv administratora dn
|
||||||
|
admin password emailadmin lv administratora parole
|
||||||
|
admin username emailadmin lv administratora lietotājvārds
|
||||||
|
advanced options emailadmin lv uzlabotās iespējas
|
||||||
|
alternate email address emailadmin lv alternatīvas e-pasta adreses
|
||||||
|
continue emailadmin lv Turpināt
|
||||||
|
cyrus imap server emailadmin lv Cyrus IMAP serveris
|
||||||
|
cyrus imap server administration emailadmin lv Cyrus IMAP servera administrēšana
|
||||||
|
default emailadmin lv noklusējums
|
||||||
|
do you really want to delete this profile emailadmin lv Vai tu tiešām vēlies dzēst šo profilu?
|
||||||
|
domainname emailadmin lv domēna vārds
|
||||||
|
edit email settings emailadmin lv rediģēt e-pasta uzstādījumus
|
||||||
|
email account active emailadmin lv e-pasta konts aktīvs
|
||||||
|
email address emailadmin lv e-pasta adrese
|
||||||
|
enable cyrus imap server administration emailadmin lv atļaut Cyrus IMAP servera administrēšanu
|
||||||
|
enable sieve emailadmin lv atļaut Sieve
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin lv Ievadi noklusēto pasta domēnu (no: lietotājs@domēns)
|
||||||
|
entry saved emailadmin lv Ieraksts saglabāts
|
||||||
|
forward also to emailadmin lv pārsūtīt arī
|
||||||
|
forward email's to emailadmin lv pārsūtīt e-pasta vēstules
|
||||||
|
forward only emailadmin lv tikai pārsūtīt
|
||||||
|
imap admin password admin lv IMAP administratora parole
|
||||||
|
imap admin user admin lv IMAP administrators
|
||||||
|
imap c-client version < 2001 emailadmin lv IMAP C-Client Version <2001
|
||||||
|
imap server emailadmin lv IMAP serveris
|
||||||
|
imap server hostname or ip address emailadmin lv IMAP servera hosta vārds vai IP adrese
|
||||||
|
imap server logintyp emailadmin lv IMAP servera autorizācijas veids
|
||||||
|
imap server port emailadmin lv IMAP servera ports
|
||||||
|
imap/pop3 server name emailadmin lv IMAP/POP3 servera nosaukums
|
||||||
|
ldap basedn emailadmin lv LDAP bāzes dn
|
||||||
|
ldap server emailadmin lv LDAP serveris
|
||||||
|
ldap server accounts dn emailadmin lv LDAP servera konti DN
|
||||||
|
ldap server admin dn emailadmin lv LDAP servera administratora DN
|
||||||
|
ldap server admin password emailadmin lv LDAP servera administratora parole
|
||||||
|
ldap server hostname or ip address emailadmin lv LDAP servera hosta vārds vai IP adrese
|
||||||
|
ldap settings emailadmin lv LDAP uzstādījumi
|
||||||
|
mail settings admin lv Pasta uzstādījumi
|
||||||
|
name of organisation emailadmin lv Organizācijas nosaukums
|
||||||
|
no alternate email address emailadmin lv nav alternatīvas e-pasta adreses
|
||||||
|
no forwarding email address emailadmin lv nav pārsūtāmās e-pasta adreses
|
||||||
|
order emailadmin lv Kārtība
|
||||||
|
pop3 server hostname or ip address emailadmin lv POP3 servera hosta vārds vai IP adrese
|
||||||
|
pop3 server port emailadmin lv POP3 servera ports
|
||||||
|
profile list emailadmin lv Profila saraksts
|
||||||
|
profile name emailadmin lv Profila vārds
|
||||||
|
remove emailadmin lv pārvietot
|
||||||
|
select type of imap/pop3 server emailadmin lv Atzīmēt IMAP/POP3 servera tipu
|
||||||
|
select type of smtp server emailadmin lv Atzīmēt SMTP servera tipu
|
||||||
|
sieve server hostname or ip address emailadmin lv <b>?Sieve?</b> servera hosta vārds vai IP adrese
|
||||||
|
sieve server port emailadmin lv Sieve servera ports
|
||||||
|
sieve settings emailadmin lv Sieve uzstadījumi
|
||||||
|
smtp server name emailadmin lv SMTP servera nosaukums
|
||||||
|
smtp settings emailadmin lv SMTP uzstādījumi
|
||||||
|
smtp-server hostname or ip address emailadmin lv SMTP servera hosta vārds vai IP adrese
|
||||||
|
smtp-server port emailadmin lv SMTP servera ports
|
||||||
|
standard emailadmin lv Standarta
|
||||||
|
standard imap server emailadmin lv Standarta IMAP serveris
|
||||||
|
standard pop3 server emailadmin lv Standarta POP3 serveris
|
||||||
|
standard smtp-server emailadmin lv Standarta SMTP serveris
|
||||||
|
this php has no imap support compiled in!! emailadmin lv Šim PHP nav IMAP nokompilēts atbalsts
|
||||||
|
use default emailadmin lv Lietot noklusējumu
|
||||||
|
use ldap defaults emailadmin lv lieto LDAP noklusējumus
|
||||||
|
use smtp auth emailadmin lv Lieto SMTP autentifikāciju
|
||||||
|
use tls authentication emailadmin lv Lieto TLS autentifikāciju
|
||||||
|
use tls encryption emailadmin lv Lieto TLS šifrēšanu
|
||||||
|
users can define their own emailaccounts emailadmin lv LIetotāji paši var definēt savus e-pasta kontus
|
||||||
|
virtual mail manager emailadmin lv VIrtuālais MAIL ManaGeR
|
||||||
|
your name emailadmin lv Tavs vārds
|
||||||
|
@ -537,3 +537,167 @@ you must select at least one group member. admin nl U moet tenminse één groeps
|
|||||||
you need to enter install id and password! admin nl U moet het installatie ID EN wachtwoord invoeren!
|
you need to enter install id and password! admin nl U moet het installatie ID EN wachtwoord invoeren!
|
||||||
you will need to remove the subcategories before you can delete this category admin nl U moet eerst de subcategorieën verwijderen voordat u deze bovenliggende categorie kunt verwijderen!
|
you will need to remove the subcategories before you can delete this category admin nl U moet eerst de subcategorieën verwijderen voordat u deze bovenliggende categorie kunt verwijderen!
|
||||||
your session could not be verified. admin nl Uw sessie kon niet geverifieerd worden
|
your session could not be verified. admin nl Uw sessie kon niet geverifieerd worden
|
||||||
|
(no subject) emailadmin nl (geen onderwerp)
|
||||||
|
account '%1' not found !!! emailadmin nl Account '%1' niet gevonden !!!
|
||||||
|
add new email address: emailadmin nl Voeg nieuw emailadres toe:
|
||||||
|
add profile emailadmin nl Profiel toevoegen
|
||||||
|
admin dn emailadmin nl admin dn
|
||||||
|
admin password emailadmin nl Admin wachtwoord
|
||||||
|
admin username emailadmin nl Admin gebruikersnaam
|
||||||
|
advanced options emailadmin nl Geavanceerde opties
|
||||||
|
alternate email address emailadmin nl Alternatief emailadres
|
||||||
|
any application emailadmin nl Iedere toepassing
|
||||||
|
any group emailadmin nl Iedere groep
|
||||||
|
any user emailadmin nl iedere gebruiker
|
||||||
|
back to admin/grouplist emailadmin nl Terug naar Beheer/Groepslijst
|
||||||
|
back to admin/userlist emailadmin nl Terug naar Beheer/Gebruikerslijst
|
||||||
|
bad login name or password. emailadmin nl Ongeldige login of paswoord
|
||||||
|
bad or malformed request. server responded: %s emailadmin nl Ongeldig of slecht geformuleerde aanvraag. Server reageerde: %s
|
||||||
|
bad request: %s emailadmin nl Slechte vraag: %s
|
||||||
|
can be used by application emailadmin nl Kan gebruikt worden door toepassing
|
||||||
|
can be used by group emailadmin nl Kan gebruikt worden door groep
|
||||||
|
can be used by user emailadmin nl kan door gebruiker gebruikt worden
|
||||||
|
connection dropped by imap server. emailadmin nl Verbinding viel uit door IMAP server
|
||||||
|
continue emailadmin nl Doorgaan
|
||||||
|
could not append message: emailadmin nl Kon niet aan bericht toevoegen:
|
||||||
|
could not complete request. reason given: %s emailadmin nl Kan verzoek niet afmaken. Opgegeven reden: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin nl Kon geen veilige verbinding openen met de IMAP server. %s : %s
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin nl CRAM-MDS of DIGEST-MDS vereist de installatie van het Auth_SASL pakket.
|
||||||
|
create new account emailadmin nl Maak een nieuwe gebruiker aan
|
||||||
|
cyrus imap server emailadmin nl Cyrus IMAP-server
|
||||||
|
cyrus imap server administration emailadmin nl Cyrus IMAP-serverbeheer
|
||||||
|
default emailadmin nl standaard
|
||||||
|
deliver extern emailadmin nl bezorg extern
|
||||||
|
displaying html messages is disabled emailadmin nl weergeven van html berichten is uitgeschakeld
|
||||||
|
displaying plain messages is disabled emailadmin nl Weergeven standaard vericht is uitgeschakeld
|
||||||
|
do not validate certificate emailadmin nl het certificaat niet valideren
|
||||||
|
do you really want to delete this profile emailadmin nl Weet u zeker dat u dit profiel wilt verwijderen
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin nl Wilt u werkelijk het filter voor de profielenlijst opnieuw instellen
|
||||||
|
domainname emailadmin nl Domeinnaam
|
||||||
|
edit email settings emailadmin nl Wijzig emailinstellingen
|
||||||
|
email account active emailadmin nl Emailaccount actief
|
||||||
|
email address emailadmin nl Emailadres
|
||||||
|
email settings common nl Emailinstellingen
|
||||||
|
emailadmin emailadmin nl EmailAdmin
|
||||||
|
emailadmin: group assigned profile common nl eMailAdmin: Groep heeft profiel toegewezen gekregen
|
||||||
|
emailadmin: user assigned profile common nl eMailAdmin: Gebruiker heeft profiel toegewezen gekregen
|
||||||
|
enable cyrus imap server administration emailadmin nl activier Cyrus IMAP serverbeheer
|
||||||
|
enable sieve emailadmin nl activeer Sieve
|
||||||
|
encrypted connection emailadmin nl versleutelde verbinding
|
||||||
|
encryption settings emailadmin nl encryptie instellingen
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin nl Voer uw standaard emaildomein in (uit: gebruiker@domein)
|
||||||
|
entry saved emailadmin nl Record opgeslagen
|
||||||
|
error connecting to imap server. %s : %s. emailadmin nl Fout verbinden met de IMAP server. %s : %s
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin nl Fout verbinden met de IMAP server: [%s] %s
|
||||||
|
error saving account! emailadmin nl Fout bij opslaan van account!
|
||||||
|
error saving the entry!!! emailadmin nl Fout bij het bewaren van de invoer!!!
|
||||||
|
event details follow emailadmin nl Afspraak details volgen
|
||||||
|
file rejected, no %2. is:%1 emailadmin nl Bestand geweigerd, geen %2.is:%1
|
||||||
|
filtered by account emailadmin nl gefilterd op Account
|
||||||
|
filtered by group emailadmin nl gefilterd op Groep
|
||||||
|
forward also to emailadmin nl Ook doorsturen naar
|
||||||
|
forward email's to emailadmin nl Emails doorsturen naar
|
||||||
|
forward only emailadmin nl Alleen doorsturen
|
||||||
|
global options emailadmin nl Algemene opties
|
||||||
|
hostname or ip emailadmin nl Hostnaam of IP
|
||||||
|
if different from email address emailadmin nl Indien afwijkend van EMAIL adres
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin nl Indien SSL of TSL wordt gebruikt, moet u de PHP openssl extensie opgeladen hebben
|
||||||
|
imap admin password admin nl IMAP beheerders wachtwoord
|
||||||
|
imap admin user admin nl IMAP beheerdersgebruiker
|
||||||
|
imap c-client version < 2001 emailadmin nl IMAP C-Client Versie < 2001
|
||||||
|
imap server emailadmin nl IMAP server
|
||||||
|
imap server closed the connection. emailadmin nl IMAP server sloot de verbinding
|
||||||
|
imap server closed the connection. server responded: %s emailadmin nl IMAP Server sloot de verbinding. Server reageerde: %s
|
||||||
|
imap server hostname or ip address emailadmin nl IMAP-server hostnaam of IP-adres
|
||||||
|
imap server logintyp emailadmin nl IMAP-server logintype
|
||||||
|
imap server name emailadmin nl imap server naam
|
||||||
|
imap server port emailadmin nl IMAP-serverpoort
|
||||||
|
imap/pop3 server name emailadmin nl IMAP/POP3-servernaam
|
||||||
|
importance emailadmin nl Belangrijk
|
||||||
|
in mbyte emailadmin nl in MBytes
|
||||||
|
inactive emailadmin nl inactief
|
||||||
|
ldap basedn emailadmin nl LDAP basedn
|
||||||
|
ldap server emailadmin nl LDAP-server
|
||||||
|
ldap server accounts dn emailadmin nl LDAP server accounts DN
|
||||||
|
ldap server admin dn emailadmin nl LDAP server admin DN
|
||||||
|
ldap server admin password emailadmin nl LDAP-server admin wachtwoord
|
||||||
|
ldap server hostname or ip address emailadmin nl LDAP-serverhostnaam of IP-adres
|
||||||
|
ldap settings emailadmin nl LDAP-instellingen
|
||||||
|
leave empty for no quota emailadmin nl Laat leeg voor geen quota
|
||||||
|
mail settings admin nl Mailinstellingen
|
||||||
|
name of organisation emailadmin nl Naam van de Organisatie
|
||||||
|
no alternate email address emailadmin nl geen alternatief emailadres
|
||||||
|
no encryption emailadmin nl geen versleuteling
|
||||||
|
no forwarding email address emailadmin nl geen emailadres om naar door te sturen
|
||||||
|
no message returned. emailadmin nl Geen bericht teruggekomen.
|
||||||
|
no plain text part found emailadmin nl geen platte tekst onderdeel gevonden
|
||||||
|
no supported imap authentication method could be found. emailadmin nl Geen ondersteunde IMAP authenticatiemethode kon gevonden worden.
|
||||||
|
order emailadmin nl Volgorde
|
||||||
|
organisation emailadmin nl Organisatie
|
||||||
|
plesk can't rename users --> request ignored emailadmin nl Plesk kan gebruikers niet hernoemen --> verzoek genegeerd
|
||||||
|
plesk imap server (courier) emailadmin nl Plesk IMAP Server (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin nl Plesk mail script '%1' niet gevonden !!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin nl Plesk vereist dat wachtwoorden minstens 5 karakters bevatten en niet de accountnaam mogen bevatten --> wachtwoord niet gewijzigd !!!
|
||||||
|
plesk smtp-server (qmail) emailadmin nl Plesk SMTP-Server (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin nl POP3-server hostnaam of IP-adres
|
||||||
|
pop3 server port emailadmin nl POP3-serverpoort
|
||||||
|
port emailadmin nl poort
|
||||||
|
postfix with ldap emailadmin nl Postfix met LDAP
|
||||||
|
processing of file %1 failed. failed to meet basic restrictions. emailadmin nl Uitvoeren van bestand %1 mislukt. Mislukt om aan de basis beperkingen te voldoen.
|
||||||
|
profile access rights emailadmin nl profiel toegangsrechten
|
||||||
|
profile is active emailadmin nl profiel is actief
|
||||||
|
profile list emailadmin nl Profiellijst
|
||||||
|
profile name emailadmin nl Profielnaam
|
||||||
|
qmaildotmode emailadmin nl qmaildotmode
|
||||||
|
quota settings emailadmin nl Quota-installingen
|
||||||
|
quota size in mbyte emailadmin nl quota grootte in MByte
|
||||||
|
remove emailadmin nl Verwijderen
|
||||||
|
required pear class mail/mimedecode.php not found. emailadmin nl PEAR benodigd, class MAIL/mimeDecode.php niet gevonden
|
||||||
|
reset filter emailadmin nl filter opnieuw instellen
|
||||||
|
save of message %1 failed. could not save message to folder %2 due to: %3 emailadmin nl Bewaren van bericht %1 is mislukt. Kon het bericht niet opslaan naar map %2 om de volgende reden %3
|
||||||
|
saving of message %1 failed. destination folder %2 does not exist. emailadmin nl Bewaren van bericht %1 mislukt. De doelmap %2 bestaat niet.
|
||||||
|
select type of imap server emailadmin nl selecteer IMAP servertype
|
||||||
|
select type of imap/pop3 server emailadmin nl Selecteer IMAP/POP3-servertype
|
||||||
|
select type of smtp server emailadmin nl Selecteer SMTP-servertype
|
||||||
|
server settings emailadmin nl server instellingen
|
||||||
|
sieve server hostname or ip address emailadmin nl Sieve-serverhostnaam of IP-adres
|
||||||
|
sieve server port emailadmin nl Sieve-serverpoort
|
||||||
|
sieve settings emailadmin nl Sieve instellingen
|
||||||
|
smtp authentication emailadmin nl SMTP authenticatie
|
||||||
|
smtp options emailadmin nl SMTP opties
|
||||||
|
smtp server name emailadmin nl SMTP-servernaam
|
||||||
|
smtp settings emailadmin nl SMTP instellingen
|
||||||
|
smtp-server hostname or ip address emailadmin nl SMTP-serverhostnaam of IP-adres
|
||||||
|
smtp-server port emailadmin nl SMTP-serverpoort
|
||||||
|
standard emailadmin nl Standaard
|
||||||
|
standard imap server emailadmin nl Standaard IMAP-server
|
||||||
|
standard pop3 server emailadmin nl Standaard POP3-server
|
||||||
|
standard smtp-server emailadmin nl Standaard SMTP-server
|
||||||
|
stationery emailadmin nl stationery
|
||||||
|
templates emailadmin nl Sjablonen
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin nl The IMAP server blijkt geen authenticatiemethode te ondersteunen. Gelieve uw systeembeheerder te contacteren.
|
||||||
|
the mimeparser can not parse this message. emailadmin nl De mimeparsers kan dit bericht niet lezen.
|
||||||
|
this php has no imap support compiled in!! emailadmin nl Deze PHP heeft geen IMAP ondersteuning verzamelt in!!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin nl Om een TLS verbinding te gebruiken, moet u een versie van PHP 5.1.0 of hoger gebruiken.
|
||||||
|
unexpected response from server to authenticate command. emailadmin nl Onverwachte reactie van de server om de opdracht te AUTHENTICEREN.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin nl Onverwachte reactie van de server op Digest-MD5 reactie.
|
||||||
|
unexpected response from server to login command. emailadmin nl Onverwachte reactie van de server op LOGIN opdracht.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin nl Onverwachte IMAP reactie van de server. Server reageerde: %s
|
||||||
|
unsupported action '%1' !!! emailadmin nl Niet-ondersteunde actie '%1'
|
||||||
|
update current email address: emailadmin nl Huidige emailadres bijwerken:
|
||||||
|
use default emailadmin nl Gebruik standaard
|
||||||
|
use ldap defaults emailadmin nl gebruik LDAP standaard instellingen
|
||||||
|
use predefined username and password defined below emailadmin nl Gebruik voorgekozen gebruikersnaam en wachtwoord zoals hieronder is ingesteld
|
||||||
|
use smtp auth emailadmin nl Gebruik SMTP authenticatie
|
||||||
|
use tls authentication emailadmin nl Gebruik TLS authenticatie
|
||||||
|
use tls encryption emailadmin nl Gebruik TLS-encryptie
|
||||||
|
user can edit forwarding address emailadmin nl Gebruiker kan het doorstuuradres aanpassen
|
||||||
|
username (standard) emailadmin nl gebruikersnaam (standaard)
|
||||||
|
username/password defined by admin emailadmin nl Gebruikersnaam/Wachtwoord ingesteld door beheerder
|
||||||
|
username@domainname (virtual mail manager) emailadmin nl gebruikersnaam@domeinnaam (Virtual MAIL ManaGeR)
|
||||||
|
users can define their own emailaccounts emailadmin nl Gebruikers kunnen hun eigen emailaccounts definiëren
|
||||||
|
users can define their own identities emailadmin nl gebruikers kunnen hun eigen identiteit instellen
|
||||||
|
users can define their own signatures emailadmin nl gebruikers kunnen hun eigen ondertekening instellen
|
||||||
|
virtual mail manager emailadmin nl Virtual MAIL ManaGeR
|
||||||
|
you have received a new message on the emailadmin nl U heeft een nieuw bericht ontvangen op de
|
||||||
|
your name emailadmin nl Uw naam
|
||||||
|
@ -443,3 +443,83 @@ you must enter an application title. admin no Du må registrere et programtittel
|
|||||||
you must select a file type admin no Du må velge en filtype
|
you must select a file type admin no Du må velge en filtype
|
||||||
you will need to remove the subcategories before you can delete this category admin no Du må først fjerne underkategorier før du kan slette denne kategorien!
|
you will need to remove the subcategories before you can delete this category admin no Du må først fjerne underkategorier før du kan slette denne kategorien!
|
||||||
your session could not be verified. admin no Din sesjon kunne ikke bekreftes
|
your session could not be verified. admin no Din sesjon kunne ikke bekreftes
|
||||||
|
(no subject) emailadmin no (uten emne)
|
||||||
|
add profile emailadmin no Legg til profil
|
||||||
|
admin dn emailadmin no Admin dn
|
||||||
|
admin password emailadmin no Admin passord
|
||||||
|
admin username emailadmin no Admin brukernavn
|
||||||
|
advanced options emailadmin no Avanserte valg
|
||||||
|
alternate email address emailadmin no Alternativ e-mailadresse
|
||||||
|
continue emailadmin no Fortsette
|
||||||
|
cyrus imap server emailadmin no Cyrus IMAP tjener
|
||||||
|
cyrus imap server administration emailadmin no Cyrys IMAP tjeneradministrasjon
|
||||||
|
default emailadmin no standard
|
||||||
|
deliver extern emailadmin no lever eksternt
|
||||||
|
do you really want to delete this profile emailadmin no Ønsker du virkelig å slette denne profilen
|
||||||
|
domainname emailadmin no Domenenavn
|
||||||
|
edit email settings emailadmin no Rediger e-mail oppsett
|
||||||
|
email account active emailadmin no E-mailkonto aktiv
|
||||||
|
email address emailadmin no E-mailadresse
|
||||||
|
enable cyrus imap server administration emailadmin no Tillat Cyrus IMAP-tjener administrasjon
|
||||||
|
enable sieve emailadmin no Tillat Sieve
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin no Registrer ditt standard Emaildomene (fra: bruker@domene)
|
||||||
|
entry saved emailadmin no Registrering lagret
|
||||||
|
error saving the entry!!! emailadmin no Feil ved lagring av forekomst!
|
||||||
|
event details follow emailadmin no Hendelses Detaljer Følger
|
||||||
|
forward also to emailadmin no videresend også til
|
||||||
|
forward email's to emailadmin no videresend e-mailer til
|
||||||
|
forward only emailadmin no bare videresending
|
||||||
|
imap admin password admin no IMAP Administrasjonspassord
|
||||||
|
imap admin user admin no IMAP Administrasjonsbruker
|
||||||
|
imap c-client version < 2001 emailadmin no IMAP C-klient versjon < 2001
|
||||||
|
imap server emailadmin no IMAP Tjener
|
||||||
|
imap server hostname or ip address emailadmin no Tjenernavn eller IP-adresse for IMAP tjener
|
||||||
|
imap server logintyp emailadmin no IMAP Tjener påloggingstype
|
||||||
|
imap server port emailadmin no IMAP Tjenerport
|
||||||
|
imap/pop3 server name emailadmin no IMAP/POP3 tjenernavn
|
||||||
|
in mbyte emailadmin no i MByte
|
||||||
|
ldap basedn emailadmin no LDAP basedn
|
||||||
|
ldap server emailadmin no LDAP Tjener
|
||||||
|
ldap server accounts dn emailadmin no LDAP Tjenerkonti DN
|
||||||
|
ldap server admin dn emailadmin no LDAP Tjeneradmin. DN
|
||||||
|
ldap server admin password emailadmin no LDAP Tjeneradmin. passord
|
||||||
|
ldap server hostname or ip address emailadmin no Tjenernavn eller IP-adresse for LDAP tjener
|
||||||
|
ldap settings emailadmin no LDAP Instillinger
|
||||||
|
leave empty for no quota emailadmin no La stå tomt for ingen begrensning.
|
||||||
|
mail settings admin no E-post innstillinger
|
||||||
|
name of organisation emailadmin no Navn på organisasjon
|
||||||
|
no alternate email address emailadmin no ingen alternativ e-mailadresse
|
||||||
|
no forwarding email address emailadmin no ingen e-mailadresse for videresending
|
||||||
|
order emailadmin no Ordre
|
||||||
|
organisation emailadmin no Organisasjon
|
||||||
|
pop3 server hostname or ip address emailadmin no Tjenernavn eller IP-adresse for POP3 tjener
|
||||||
|
pop3 server port emailadmin no POP3 Tjenerport
|
||||||
|
postfix with ldap emailadmin no Postfix med LDAP
|
||||||
|
profile list emailadmin no Profilliste
|
||||||
|
profile name emailadmin no Profilnavn
|
||||||
|
qmaildotmode emailadmin no qmaildotmodus
|
||||||
|
quota settings emailadmin no Grenseinstillinger
|
||||||
|
quota size in mbyte emailadmin no Grense Str. i Mbyte
|
||||||
|
remove emailadmin no fjern
|
||||||
|
select type of imap/pop3 server emailadmin no Velg type for IMAP/POP3 Tjener
|
||||||
|
select type of smtp server emailadmin no Velg type SMTP Tjener
|
||||||
|
sieve server hostname or ip address emailadmin no Tjenernavn eller IP-adresse for Sieve-tjener
|
||||||
|
sieve server port emailadmin no Sieve tjenerport
|
||||||
|
sieve settings emailadmin no Sieve innstillinger
|
||||||
|
smtp server name emailadmin no SMTP Tjenernavn
|
||||||
|
smtp settings emailadmin no SMTP innstillinger
|
||||||
|
smtp-server hostname or ip address emailadmin no Tjenernavn eller IP-Adresse for SMTP-Tjener
|
||||||
|
smtp-server port emailadmin no SMTP Tjenerport
|
||||||
|
standard emailadmin no standard
|
||||||
|
standard imap server emailadmin no Standard IMAP tjener
|
||||||
|
standard pop3 server emailadmin no Standard POP3 tjener
|
||||||
|
standard smtp-server emailadmin no Standard SMTP tjener
|
||||||
|
this php has no imap support compiled in!! emailadmin no PHP versjonen har ingen IMAP-støtte kompilert inn
|
||||||
|
use default emailadmin no Bruk standard
|
||||||
|
use ldap defaults emailadmin no Bruk LDAP standaroppsett
|
||||||
|
use smtp auth emailadmin no Bruk SMTP autentisering
|
||||||
|
use tls authentication emailadmin no Bruk TLS autentisering
|
||||||
|
use tls encryption emailadmin no Bruk TLS kryptering
|
||||||
|
users can define their own emailaccounts emailadmin no Brukere kan definere egne e-post kontoer
|
||||||
|
virtual mail manager emailadmin no Virtuell Mail Manager
|
||||||
|
your name emailadmin no Ditt navn
|
||||||
|
@ -589,3 +589,164 @@ you need to enter install id and password! admin pl Musisz podać ID instalacji
|
|||||||
you will need to remove the subcategories before you can delete this category admin pl Należy usunąć kategorie podrzędne przed skasowaniem tej kategorii !
|
you will need to remove the subcategories before you can delete this category admin pl Należy usunąć kategorie podrzędne przed skasowaniem tej kategorii !
|
||||||
your last submission was less then %1 days ago! admin pl Swój ostatni wpis przesłałeś mniej niż %1 dni temu!
|
your last submission was less then %1 days ago! admin pl Swój ostatni wpis przesłałeś mniej niż %1 dni temu!
|
||||||
your session could not be verified. admin pl Nie można zweryfikować sesji.
|
your session could not be verified. admin pl Nie można zweryfikować sesji.
|
||||||
|
(no subject) emailadmin pl (bez tematu)
|
||||||
|
account '%1' not found !!! emailadmin pl Konto '%1' nie zostało znalezione!
|
||||||
|
active templates emailadmin pl Aktywne szablony
|
||||||
|
add new email address: emailadmin pl Dodaj nowy adres poczty elektronicznej:
|
||||||
|
add profile emailadmin pl Dodaj profil
|
||||||
|
admin dn emailadmin pl DN (nazwa wyróżniająca) administratora
|
||||||
|
admin password emailadmin pl Hasło administratora
|
||||||
|
admin username emailadmin pl Nazwa użytkownika konta administratora
|
||||||
|
advanced options emailadmin pl Ustawienia zaawansowane
|
||||||
|
alternate email address emailadmin pl Alternatywny adres email
|
||||||
|
any application emailadmin pl Dowolna aplikacja
|
||||||
|
any group emailadmin pl Dowolna grupa
|
||||||
|
any user emailadmin pl Dowolny użytkownik
|
||||||
|
back to admin/grouplist emailadmin pl Powrót do konta administratora/ listy grup
|
||||||
|
back to admin/userlist emailadmin pl Powrót do konta administratora/ listy użytkowników
|
||||||
|
bad login name or password. emailadmin pl Zła nazwa użytkownika lub hasło
|
||||||
|
bad or malformed request. server responded: %s emailadmin pl Nieprawidłowe lub źle skonstruowane żądane. Serwer odpowiedział: %s
|
||||||
|
bad request: %s emailadmin pl Nieprawidłowe żądanie: %s
|
||||||
|
can be used by application emailadmin pl Może być używane przez aplikację
|
||||||
|
can be used by group emailadmin pl Może byc używane przez grupę
|
||||||
|
can be used by user emailadmin pl Może być używane przez użytkownika
|
||||||
|
connection dropped by imap server. emailadmin pl Połączenie zerwane przez serwer IMAP
|
||||||
|
continue emailadmin pl Kontunuj
|
||||||
|
could not complete request. reason given: %s emailadmin pl Nie udało się zrealizować żądania. Powód: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin pl Nie udało się stworzyć bezpiecznego połączenia do serwera IMAP. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin pl CRAM-MD5 lub DIGEST-MD5 wymagają, aby pakiet Auth_SASL (Perl) był zainstalowany
|
||||||
|
cyrus imap server emailadmin pl Serwer IMAP Cyrus
|
||||||
|
cyrus imap server administration emailadmin pl Administracja serwerem IMAP Cyrus
|
||||||
|
default emailadmin pl domyślny
|
||||||
|
deliver extern emailadmin pl dostarczanie na zewnątrz
|
||||||
|
displaying html messages is disabled emailadmin pl Wyświetlanie wiadomości w HTML jest wyłączone
|
||||||
|
do not validate certificate emailadmin pl nie sprawdzaj poprawności certyfikatu
|
||||||
|
do you really want to delete this profile emailadmin pl Czy na pewno chcesz usunąć ten profil?
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin pl Czy na pewno chcesz zresetować filtr w liście profilu?
|
||||||
|
domainname emailadmin pl Nazwa domeny
|
||||||
|
edit email settings emailadmin pl Edytuj ustawienia poczty elektronicznej
|
||||||
|
email account active emailadmin pl Konto poczty aktywne
|
||||||
|
email address emailadmin pl Adres poczty elektronicznej
|
||||||
|
email settings common pl Ustawienia poczty elektronicznej
|
||||||
|
emailadmin emailadmin pl Poczta Elektroniczna - Administracja
|
||||||
|
emailadmin: group assigned profile common pl Administrator Poczty: Grupa przypisana do profilu
|
||||||
|
emailadmin: user assigned profile common pl Administrator Poczty: użytkownik przypisany do profilu
|
||||||
|
enable cyrus imap server administration emailadmin pl aktywuj administrację serwerem IMAP Cyrus
|
||||||
|
enable sieve emailadmin pl aktywuj sito (Sieve)
|
||||||
|
encrypted connection emailadmin pl połączenie szyfrowane
|
||||||
|
encryption settings emailadmin pl ustawienia szyfrowania
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin pl Wprowadź domyślną domenę pocztową (z użytkownik@domena)
|
||||||
|
entry saved emailadmin pl Wpis zachowany
|
||||||
|
error connecting to imap server. %s : %s. emailadmin pl Błąd połączenia do serwera IMAP. %s : %s
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin pl Błąd połączenia do serwera IMAP. [%s] %s
|
||||||
|
error saving account! emailadmin pl Błąd przy zapisie konta!
|
||||||
|
error saving the entry!!! emailadmin pl Błąd przy zachowywaniu wpisu !!!
|
||||||
|
event details follow emailadmin pl Detale Wydarzenia Następują
|
||||||
|
file rejected, no %2. is:%1 emailadmin pl Plik odrzucony. Jest %1 nie %2.
|
||||||
|
filtered by account emailadmin pl Filtrowane przez konto
|
||||||
|
filtered by group emailadmin pl Filtrowane przez grupe
|
||||||
|
forward also to emailadmin pl Prześlij również do
|
||||||
|
forward email's to emailadmin pl Prześlij wiadomości do
|
||||||
|
forward only emailadmin pl Prześlij tylko
|
||||||
|
global options emailadmin pl Ustawienia globalne
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin pl Jeżeli korzystasz z SSL lub TLS, musisz zapewnić obsługę OpenSSL w PHP.
|
||||||
|
imap admin password admin pl Hasło administratora IMAP
|
||||||
|
imap admin user admin pl Login administratora IMAP
|
||||||
|
imap c-client version < 2001 emailadmin pl Wersja C-Client IMAP < 2001
|
||||||
|
imap server emailadmin pl Serwer IMAP
|
||||||
|
imap server closed the connection. emailadmin pl Serwer IMAP zakończył połączenie.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin pl Serwer IMAP zakończył połączenie. Jego odpowiedź: %s
|
||||||
|
imap server hostname or ip address emailadmin pl Nazwa hosta lub IP serwera IMAP
|
||||||
|
imap server logintyp emailadmin pl Sposób logowania do serwera IMAP
|
||||||
|
imap server name emailadmin pl Nazwa serwera IMAP
|
||||||
|
imap server port emailadmin pl Port serwera IMAP
|
||||||
|
imap/pop3 server name emailadmin pl Nazwa serwera IMAP/POP3
|
||||||
|
importance emailadmin pl ważność
|
||||||
|
in mbyte emailadmin pl w megabajtach
|
||||||
|
inactive emailadmin pl nieaktywny
|
||||||
|
ldap basedn emailadmin pl Bazowy DN w LDAP
|
||||||
|
ldap server emailadmin pl Serwer LDAP
|
||||||
|
ldap server accounts dn emailadmin pl DN dla kont w LDAP
|
||||||
|
ldap server admin dn emailadmin pl DN administratora w LDAP
|
||||||
|
ldap server admin password emailadmin pl Hasło administratora serwera LDAP
|
||||||
|
ldap server hostname or ip address emailadmin pl Nazwa hosta lub IP serwera LDAP
|
||||||
|
ldap settings emailadmin pl Ustawienia LDAP
|
||||||
|
leave empty for no quota emailadmin pl zostaw puste aby wyłączyć quota
|
||||||
|
mail settings admin pl Ustawienia poczty elektronicznej
|
||||||
|
manage stationery templates emailadmin pl Zarządzaj szablonami stacjonarnymi
|
||||||
|
name of organisation emailadmin pl Nazwa lub organizacja
|
||||||
|
no alternate email address emailadmin pl brak zapasowego adresu e-mail
|
||||||
|
no encryption emailadmin pl brak szyfrowania
|
||||||
|
no forwarding email address emailadmin pl brak adresu poczty przesyłanej
|
||||||
|
no message returned. emailadmin pl Nie otrzymano wiadomości.
|
||||||
|
no plain text part found emailadmin pl brak części 'czystym' tekstem
|
||||||
|
no supported imap authentication method could be found. emailadmin pl Nie znaleziono obsługiwanej metody autentykacji dla IMAP
|
||||||
|
order emailadmin pl Porządek
|
||||||
|
organisation emailadmin pl Organizacja
|
||||||
|
plesk can't rename users --> request ignored emailadmin pl Plesk nie może zmienić nazwy użytkowników --> prośba odrzucona
|
||||||
|
plesk imap server (courier) emailadmin pl Plesk IMAP Serwea (Kurier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin pl Skrypt %1 mail Plesk nie został znaleziony!!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin pl Plesk wymaga hasła składającego się z przynajmniej pięciu znaków i nie zawierającego nazwy konta --> hasło nie ustalone!!!
|
||||||
|
plesk smtp-server (qmail) emailadmin pl Plesk Serwera SMTP (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin pl Nazwa hosta lub IP serwera POP3
|
||||||
|
pop3 server port emailadmin pl Port serwera POP3
|
||||||
|
port emailadmin pl port
|
||||||
|
postfix with ldap emailadmin pl Postfix z LDAP
|
||||||
|
processing of file %1 failed. failed to meet basic restrictions. emailadmin pl Przetwarzanie pliku %1 nie powiodło się. Nie dotrzymano podstawowych restrykcji.
|
||||||
|
profile access rights emailadmin pl prawa dostępu do profilu
|
||||||
|
profile is active emailadmin pl Profil jest aktywny
|
||||||
|
profile list emailadmin pl Lista profili
|
||||||
|
profile name emailadmin pl Nazwa Profilu
|
||||||
|
qmaildotmode emailadmin pl qmaildotmode
|
||||||
|
quota settings emailadmin pl ustawnienia quoty
|
||||||
|
quota size in mbyte emailadmin pl ograniczenie w megabajtach
|
||||||
|
remove emailadmin pl Usuń
|
||||||
|
reset filter emailadmin pl Resetuj filtr
|
||||||
|
select type of imap server emailadmin pl Wybierz rodzaj serwera IMAP
|
||||||
|
select type of imap/pop3 server emailadmin pl Wybierz rodzaj serwera IMAP/POP3
|
||||||
|
select type of smtp server emailadmin pl Wybierz rodzaj serwera SMTP
|
||||||
|
send using this email-address emailadmin pl Prześlij za pomocą tego adresu e-mail
|
||||||
|
server settings emailadmin pl Ustawienia serwera
|
||||||
|
sieve server hostname or ip address emailadmin pl Adres IP lub nazwa Sieve
|
||||||
|
sieve server port emailadmin pl Port serwera Sieve
|
||||||
|
sieve settings emailadmin pl Ustawienia Sieve
|
||||||
|
smtp authentication emailadmin pl Autentykacja SMTP
|
||||||
|
smtp options emailadmin pl Opcje SMTP
|
||||||
|
smtp server name emailadmin pl Nazwa serwera SMTP
|
||||||
|
smtp settings emailadmin pl Ustawienia SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin pl Nazwa hosta lub IP serwera SMTP
|
||||||
|
smtp-server port emailadmin pl Port serwera SMTP
|
||||||
|
standard emailadmin pl Standard
|
||||||
|
standard imap server emailadmin pl Standardowy serwer IMAP
|
||||||
|
standard pop3 server emailadmin pl Standardowy serwer POP3
|
||||||
|
standard smtp-server emailadmin pl Standardowy serwer SMTP
|
||||||
|
stationery emailadmin pl Stacjonarny
|
||||||
|
templates emailadmin pl Szablony
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin pl Serwer IMAP nie obsługuje wskazanej metody autentykacji. Proszę skontaktować się z administratorem.
|
||||||
|
the mimeparser can not parse this message. emailadmin pl Nie udało się przetworzyć zawartości MIME tej wiadomości
|
||||||
|
this php has no imap support compiled in!! emailadmin pl Interpreter PHP nie posiada obsługi IMAP!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin pl Aby skorzystać z połączenia TLS, musisz posiadać wersję PHP 5.1.0 lub wyższą.
|
||||||
|
unexpected response from server to authenticate command. emailadmin pl Niespodziewana odpowiedź serwera na polecenie AUTHENTICATE.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin pl Niespodziewana odpowiedź serwera na zapytanie Digest-MD5
|
||||||
|
unexpected response from server to login command. emailadmin pl Niespodziewana odpowiedź serwera na polecenie LOGIN.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin pl Nieznana odpowiedź z serwera IMAP. Serwer przesłał: %s
|
||||||
|
unsupported action '%1' !!! emailadmin pl Operacja nieobsługiwana '%1'!
|
||||||
|
update current email address: emailadmin pl Uaktualnij bieżący adres pocztowy
|
||||||
|
use default emailadmin pl Domyślne
|
||||||
|
use ldap defaults emailadmin pl Skorzystaj z domyślnych wartości LDAP
|
||||||
|
use predefined username and password defined below emailadmin pl Skorzystaj z predefiniowanych nazw użytkownika i hasła podanego poniżej
|
||||||
|
use smtp auth emailadmin pl Skorzystaj z autentykacji SMTP
|
||||||
|
use tls authentication emailadmin pl Skorzystaj z autentykacji TLS
|
||||||
|
use tls encryption emailadmin pl Skorzystaj z szyfrowania TLS
|
||||||
|
use users email-address (as seen in useraccount) emailadmin pl użyj adresu użytkownika (taki jak widoczny w opcjach konta)
|
||||||
|
user can edit forwarding address emailadmin pl Użytkownik może zmieniać adres przekazywania
|
||||||
|
username (standard) emailadmin pl login (standardowo)
|
||||||
|
username/password defined by admin emailadmin pl Nazwa uzytkownika/Hasło określone przez administratora
|
||||||
|
username@domainname (virtual mail manager) emailadmin pl login@domena (wirtualny zarządca kont)
|
||||||
|
users can define their own emailaccounts emailadmin pl Użytkownicy mogą definiować swoje własne konta poczty elektronicznej
|
||||||
|
users can define their own identities emailadmin pl Użytkownicy mogą definiować swoje własne tożsamości
|
||||||
|
users can define their own signatures emailadmin pl Użytkownicy mogą definiować swoje własne podpisy
|
||||||
|
users can utilize these stationery templates emailadmin pl Użytkownicy mogą użyć tych szablonów stacjonarnych
|
||||||
|
virtual mail manager emailadmin pl Wirtualny Serwer Pocztowy - zarządca
|
||||||
|
you have received a new message on the emailadmin pl Otrzymałeś nową wiadomość o
|
||||||
|
your name emailadmin pl Twoje Imę
|
||||||
|
@ -529,3 +529,196 @@ you must select at least one group member. admin pt-br Você deve selecionar ao
|
|||||||
you need to enter install id and password! admin pt-br Você deve informar um ID de instalação E senha!
|
you need to enter install id and password! admin pt-br Você deve informar um ID de instalação E senha!
|
||||||
you will need to remove the subcategories before you can delete this category admin pt-br Você deverá remover as subcategorias antes de remover esta categoria !
|
you will need to remove the subcategories before you can delete this category admin pt-br Você deverá remover as subcategorias antes de remover esta categoria !
|
||||||
your session could not be verified. admin pt-br Sua sessão não pôde ser verificada
|
your session could not be verified. admin pt-br Sua sessão não pôde ser verificada
|
||||||
|
%1 entries deleted. emailadmin pt-br % 1 cadastros excluídos.
|
||||||
|
(no subject) emailadmin pt-br (sem assunto)
|
||||||
|
account '%1' not found !!! emailadmin pt-br Conta '%1' não encontrada !!!
|
||||||
|
account deleted. emailadmin pt-br % 1 cadastros excluídos.
|
||||||
|
account not found! common pt-br Conta não encontrado!
|
||||||
|
account saved. emailadmin pt-br Conta salvo.
|
||||||
|
active templates emailadmin pt-br Modelos de Ativos
|
||||||
|
add new email address: emailadmin pt-br Adicionar novo e-mail:
|
||||||
|
add profile emailadmin pt-br Adicionar Perfil
|
||||||
|
admin dn emailadmin pt-br dn do administrador
|
||||||
|
admin password emailadmin pt-br senha do administrador
|
||||||
|
admin username emailadmin pt-br nome de usuário do administrador
|
||||||
|
advanced options emailadmin pt-br opções avançadas
|
||||||
|
alternate email address emailadmin pt-br endereço de e-mail alternativo
|
||||||
|
and logged in emailadmin pt-br e registrada no
|
||||||
|
any application emailadmin pt-br qualquer aplicação
|
||||||
|
any group emailadmin pt-br qualquer grupo
|
||||||
|
any user emailadmin pt-br qualquer usuário
|
||||||
|
back to admin/grouplist emailadmin pt-br Voltar para Administração/Lista de Grupos
|
||||||
|
back to admin/userlist emailadmin pt-br Voltar para Administração/Lista de Usuários
|
||||||
|
bad login name or password. emailadmin pt-br Nome de usuário ou senha inválido(s).
|
||||||
|
bad or malformed request. server responded: %s emailadmin pt-br Solicitação inválida. Resposta do servidor: %s
|
||||||
|
bad request: %s emailadmin pt-br Solicitação inválida: %s
|
||||||
|
can be used by application emailadmin pt-br pode ser usado pela aplicação
|
||||||
|
can be used by group emailadmin pt-br pode ser usado pelo grupo
|
||||||
|
can be used by user emailadmin pt-br pode ser usado pelo usuário
|
||||||
|
connection dropped by imap server. emailadmin pt-br Conexão interrompida pelo servidor IMAP.
|
||||||
|
continue emailadmin pt-br Continuar
|
||||||
|
could not append message: emailadmin pt-br Não foi possível anexar Mensagem:
|
||||||
|
could not complete request. reason given: %s emailadmin pt-br Não foi possível completar a solicitação. Resposta do servidor: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin pt-br Não foi possível abrir conexão segura com o servidor IMAP. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin pt-br CRAM-MD5 ou DIGEST-MD5 necessitam que o pacote Auth_SASL esteja instalado.
|
||||||
|
create new account emailadmin pt-br Criar uma nova conta
|
||||||
|
create new identity emailadmin pt-br Criar uma nova identidade
|
||||||
|
cyrus imap server emailadmin pt-br Servidor Cyrus IMAP
|
||||||
|
cyrus imap server administration emailadmin pt-br Administração do Servidor Cyrus IMAP
|
||||||
|
default emailadmin pt-br padrão
|
||||||
|
delete identity emailadmin pt-br Excluir identidade
|
||||||
|
delete this account emailadmin pt-br Apagar esta conta
|
||||||
|
deliver extern emailadmin pt-br entrega externa
|
||||||
|
displaying html messages is disabled emailadmin pt-br exibir mensagens em HTML é desativada
|
||||||
|
displaying plain messages is disabled emailadmin pt-br exibição de mensagens simples é desativado
|
||||||
|
do not validate certificate emailadmin pt-br não validar certificado
|
||||||
|
do you really want to delete this profile emailadmin pt-br Tem certeza que deseja remover esse perfil?
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin pt-br Tem certeza que deseja reiniciar o filtro para a listagem do perfil
|
||||||
|
domainname emailadmin pt-br nome do domínio
|
||||||
|
edit email settings emailadmin pt-br editar configurações de e-mail
|
||||||
|
email account active emailadmin pt-br conta de e-mail ativa
|
||||||
|
email address emailadmin pt-br endrereço de e-mail
|
||||||
|
email settings common pt-br Configurações do E-mail
|
||||||
|
emailadmin emailadmin pt-br Administração do E-Mail
|
||||||
|
emailadmin: group assigned profile common pt-br Administração de eMail: Perfil de Grupo
|
||||||
|
emailadmin: user assigned profile common pt-br Administração de eMail: Perfil de Usuário
|
||||||
|
enable cyrus imap server administration emailadmin pt-br habilitar administração do Servidor Cyrus IMAP
|
||||||
|
enable sieve emailadmin pt-br habilitar Sieve
|
||||||
|
encrypted connection emailadmin pt-br conexão criptografada
|
||||||
|
encryption settings emailadmin pt-br configurações de criptografia
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin pt-br Entre com o domínio de e-mail padrão (de: usuario@dominio)
|
||||||
|
entry saved emailadmin pt-br Registro salvo
|
||||||
|
error connecting to imap server. %s : %s. emailadmin pt-br Erro conectando ao servidor IMAP. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin pt-br Erro conectando ao servidor IMAP: [%s] %s.
|
||||||
|
error deleting entry! emailadmin pt-br Erro ao excluir a entrada!
|
||||||
|
error saving account! emailadmin pt-br Erro ao salvar conta!
|
||||||
|
error saving the entry!!! emailadmin pt-br Erro salvando o registro!!
|
||||||
|
error, no username! emailadmin pt-br Erro, nenhum nome de usuário!
|
||||||
|
event details follow emailadmin pt-br Detalhes do Evento seguir
|
||||||
|
failed to delete account! emailadmin pt-br Falha ao excluir conta!
|
||||||
|
file rejected, no %2. is:%1 emailadmin pt-br Arquivo rejeitado, sem% 2. É: 1%
|
||||||
|
filtered by account emailadmin pt-br filtrado por Conta
|
||||||
|
filtered by group emailadmin pt-br filtrado por Grupo
|
||||||
|
forward also to emailadmin pt-br encaminhar também para
|
||||||
|
forward email's to emailadmin pt-br encaminhar mensagens para
|
||||||
|
forward only emailadmin pt-br encaminhar somente
|
||||||
|
global options emailadmin pt-br opções globais
|
||||||
|
hostname or ip emailadmin pt-br Nome do host ou IP
|
||||||
|
identity deleted emailadmin pt-br Identidade eliminado
|
||||||
|
identity saved. emailadmin pt-br Identidade salvo.
|
||||||
|
if different from email address emailadmin pt-br se for diferente do endereço de email
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin pt-br Se estiver usando SSL ou TLS, você deverá ter a extensão PHP 'openssl' carretada.
|
||||||
|
imap admin password admin pt-br Senha do administrador IMAP
|
||||||
|
imap admin user admin pt-br Usuário administrador do IMAP
|
||||||
|
imap c-client version < 2001 emailadmin pt-br IMAP C-Cliente Versão < 2001
|
||||||
|
imap server emailadmin pt-br Servidor IMAP
|
||||||
|
imap server closed the connection. emailadmin pt-br O servidor IMAP fechou a conexão.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin pt-br O servidor IMAP fechou a conexão. Resposta do servidor: %s
|
||||||
|
imap server hostname or ip address emailadmin pt-br Nome ou IP do servidor IMAP
|
||||||
|
imap server logintyp emailadmin pt-br Tipo de login do servidor IMAP
|
||||||
|
imap server name emailadmin pt-br nome do servidor imap
|
||||||
|
imap server port emailadmin pt-br Porta do servidor IMAP
|
||||||
|
imap/pop3 server name emailadmin pt-br Nome do servidor IMAP/POP3
|
||||||
|
importance emailadmin pt-br importância
|
||||||
|
in mbyte emailadmin pt-br em Mbytes
|
||||||
|
inactive emailadmin pt-br inativo
|
||||||
|
ldap basedn emailadmin pt-br DN Base do LDAP
|
||||||
|
ldap server emailadmin pt-br Servidor LDAP
|
||||||
|
ldap server accounts dn emailadmin pt-br Contas DN de servidores LDAP
|
||||||
|
ldap server admin dn emailadmin pt-br Administrador DN de servidor LDAP
|
||||||
|
ldap server admin password emailadmin pt-br Senha do administrador DN de servidor LDAP
|
||||||
|
ldap server hostname or ip address emailadmin pt-br Nome ou endereço IP do servidor LDAP
|
||||||
|
ldap settings emailadmin pt-br Configurações do LDAP
|
||||||
|
leave empty for no quota emailadmin pt-br deixe em branco para nenhuma quota
|
||||||
|
mail settings admin pt-br Configurações de E-Mail
|
||||||
|
manage stationery templates emailadmin pt-br Gerenciar modelos de papelaria
|
||||||
|
manual entry emailadmin pt-br Entrada manual
|
||||||
|
mb used emailadmin pt-br MB usado
|
||||||
|
name of organisation emailadmin pt-br Nome da organização
|
||||||
|
no alternate email address emailadmin pt-br sem conta de e-mail alternativa
|
||||||
|
no encryption emailadmin pt-br sem criptografia
|
||||||
|
no forwarding email address emailadmin pt-br sem conta de e-mail para encaminhar
|
||||||
|
no message returned. emailadmin pt-br Nenhuma mensagem retornada.
|
||||||
|
no plain text part found emailadmin pt-br nenhuma parte de texto simples encontrado
|
||||||
|
no supported imap authentication method could be found. emailadmin pt-br Nenhum método de autenticação IMAP suportado pôde ser encontrado.
|
||||||
|
order emailadmin pt-br ordem
|
||||||
|
organisation emailadmin pt-br organização
|
||||||
|
plesk can't rename users --> request ignored emailadmin pt-br Plesk não pode renomear usuários --> solicitação ignorada
|
||||||
|
plesk imap server (courier) emailadmin pt-br Servidor IMAP Plesk (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin pt-br Script de e-mail Plesk '%1' não encontrado !!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin pt-br Plesk exige que senhas tenha no mínimo 5 caracteres e não contenham o nome da conta --> senha NÃO configurada!!!
|
||||||
|
plesk smtp-server (qmail) emailadmin pt-br Servidor SMTP Plesk (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin pt-br Nome ou endereço IP do servidor POP3
|
||||||
|
pop3 server port emailadmin pt-br Porta do servidor POP3
|
||||||
|
port emailadmin pt-br porta
|
||||||
|
postfix with ldap emailadmin pt-br Postfix com LDAP
|
||||||
|
profile access rights emailadmin pt-br direito de acesso aos perfis
|
||||||
|
profile is active emailadmin pt-br perfil está ativo
|
||||||
|
profile list emailadmin pt-br Lista de perfis
|
||||||
|
profile name emailadmin pt-br Nome do perfil
|
||||||
|
qmaildotmode emailadmin pt-br modo dos arquivos qmail (.qmail)
|
||||||
|
quota settings emailadmin pt-br configurações de quota
|
||||||
|
quota size in mbyte emailadmin pt-br tamanho da cota em MByte
|
||||||
|
relay access checked emailadmin pt-br Acesso Relé verificado
|
||||||
|
remove emailadmin pt-br remover
|
||||||
|
required pear class mail/mimedecode.php not found. emailadmin pt-br Classe PEAR requeridos Correio / mimeDecode.php não encontrado.
|
||||||
|
reset filter emailadmin pt-br reiniciar filtro
|
||||||
|
secure connection emailadmin pt-br Conexão segura
|
||||||
|
select type of imap server emailadmin pt-br selecione o tipo de servidor IMAP
|
||||||
|
select type of imap/pop3 server emailadmin pt-br Selecione o tipo de servidor IMAP/POP3
|
||||||
|
select type of smtp server emailadmin pt-br Selecione o tipo de servidor SMTP
|
||||||
|
send using this email-address emailadmin pt-br Enviar usando esse endereço de e-mail
|
||||||
|
server settings emailadmin pt-br configurações do servidor
|
||||||
|
sieve server hostname or ip address emailadmin pt-br Nome ou endereço IP do servidor Sieve
|
||||||
|
sieve server port emailadmin pt-br Porta do Servidor Sieve
|
||||||
|
sieve settings emailadmin pt-br Configurações Sieve
|
||||||
|
skip imap emailadmin pt-br Ir IMAP
|
||||||
|
skipping imap configuration! emailadmin pt-br Ignorando configuração IMAP!
|
||||||
|
smtp authentication emailadmin pt-br autenticação smtp
|
||||||
|
smtp options emailadmin pt-br opções smtp
|
||||||
|
smtp server emailadmin pt-br Servidor SMTP
|
||||||
|
smtp server name emailadmin pt-br Nome do Servidor SMTP
|
||||||
|
smtp settings emailadmin pt-br configurações SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin pt-br Nome ou endereço IP do servidor SMTP
|
||||||
|
smtp-server port emailadmin pt-br Porta do servidor SMTP
|
||||||
|
standard emailadmin pt-br Padrão
|
||||||
|
standard identity emailadmin pt-br Identidade padrão
|
||||||
|
standard imap server emailadmin pt-br Servidor IMAP padrão
|
||||||
|
standard pop3 server emailadmin pt-br Servidor POP3 padrão
|
||||||
|
standard smtp-server emailadmin pt-br Servidor SMTP padrão
|
||||||
|
starts with emailadmin pt-br Começa com
|
||||||
|
stationery emailadmin pt-br Artigos de papelaria
|
||||||
|
successful connected to %1 server%2. emailadmin pt-br Successful ligado ao servidor% 1% 2.
|
||||||
|
switch back to standard identity to save account. emailadmin pt-br Volte para a identidade padrão para salvar conta.
|
||||||
|
templates emailadmin pt-br Templates
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin pt-br O servidor IMAP não parece suportar o método de autenticação selecionado. Por favor contacte o administrador do seu sistema.
|
||||||
|
the mimeparser can not parse this message. emailadmin pt-br O mimeparser não pode analisar essa mensagem.
|
||||||
|
this php has no imap support compiled in!! emailadmin pt-br Este PHP não tem suporte a IMAP compilado nele!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin pt-br Para usar uma conexão TLS, você deve estar rodando PHP versão 5.1.0 ou maior.
|
||||||
|
unexpected response from server to authenticate command. emailadmin pt-br Resposta inesperada do servidor para o comando AUTHENTICATE.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin pt-br Resposta inesperada do servidor para a resposta Digest-MD5.
|
||||||
|
unexpected response from server to login command. emailadmin pt-br Resposta inesperada do servidor para o comando LOGIN.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin pt-br Resposta desconhecida do servidor IMAP. Resposta do servidor: %s
|
||||||
|
unsupported action '%1' !!! emailadmin pt-br Ação não suportada: '%1' !!!
|
||||||
|
update current email address: emailadmin pt-br Atualizar e-mail atual:
|
||||||
|
use default emailadmin pt-br Usar o padrão
|
||||||
|
use ldap defaults emailadmin pt-br usar padrões LDAP
|
||||||
|
use predefined username and password defined below emailadmin pt-br Usar usuário e senha pré-definidos abaixo
|
||||||
|
use smtp auth emailadmin pt-br usar SMTP Autenticado
|
||||||
|
use tls authentication emailadmin pt-br Usar autenticação TLS
|
||||||
|
use tls encryption emailadmin pt-br Usar encriptação TLS
|
||||||
|
use users email-address (as seen in useraccount) emailadmin pt-br Use usuários endereço de e-mail, conforme definido na conta do usuário
|
||||||
|
user can edit forwarding address emailadmin pt-br usuário pode editar endereço de encaminhamento
|
||||||
|
userid@domain eg. u1234@domain emailadmin pt-br Domínio @ UserID por exemplo. u1234 @ domínio
|
||||||
|
username (standard) emailadmin pt-br nome do usuário (padrão)
|
||||||
|
username/password defined by admin emailadmin pt-br Nome de usuário/Senha definidos pelo administrador
|
||||||
|
username@domainname (virtual mail manager) emailadmin pt-br nomedousuario@nomedodominio (Gerenciador Virtual Mail)
|
||||||
|
users can define their own emailaccounts emailadmin pt-br Os usuários podem definir sua próprias contas de correio
|
||||||
|
users can define their own identities emailadmin pt-br usuários podem definir suas próprias identidades
|
||||||
|
users can define their own signatures emailadmin pt-br usuários podem definir suas próprias assinaturas
|
||||||
|
users can utilize these stationery templates emailadmin pt-br Os usuários podem utilizar esses modelos de papel de carta
|
||||||
|
using data from mozilla ispdb for provider %1 emailadmin pt-br Usando dados da Mozilla ISPDB do fornecedor% 1
|
||||||
|
virtual mail manager emailadmin pt-br Gerenciador Virtual Mail
|
||||||
|
you have received a new message on the emailadmin pt-br Você recebeu uma nova mensagem na
|
||||||
|
your message to %1 was displayed. emailadmin pt-br A sua mensagem para% 1 foi exibido.
|
||||||
|
your name emailadmin pt-br Seu nome
|
||||||
|
@ -466,3 +466,108 @@ you must enter an application title. admin pt É necessário atribuir um título
|
|||||||
you must select a file type admin pt É necessário seleccionar um tipo de ficheiro
|
you must select a file type admin pt É necessário seleccionar um tipo de ficheiro
|
||||||
you will need to remove the subcategories before you can delete this category admin pt É necessário remover as subcategorias para poder eliminar esta categoria !
|
you will need to remove the subcategories before you can delete this category admin pt É necessário remover as subcategorias para poder eliminar esta categoria !
|
||||||
your session could not be verified. admin pt A sua sessão expirou
|
your session could not be verified. admin pt A sua sessão expirou
|
||||||
|
(no subject) emailadmin pt (sem assunto)
|
||||||
|
add profile emailadmin pt Adicionar perfil
|
||||||
|
admin dn emailadmin pt DN do administrador
|
||||||
|
admin password emailadmin pt Senha do administrador
|
||||||
|
admin username emailadmin pt Nome do utilizador do administrador
|
||||||
|
advanced options emailadmin pt Opções avançadas
|
||||||
|
alternate email address emailadmin pt Endereço de correio electrónico alternativo
|
||||||
|
any application emailadmin pt Qualquer aplicação
|
||||||
|
any group emailadmin pt Qualquer grupo
|
||||||
|
can be used by application emailadmin pt Pode ser utilizado pela aplicação
|
||||||
|
can be used by group emailadmin pt Pode ser utilizado pelo grupo
|
||||||
|
continue emailadmin pt Continuar
|
||||||
|
could not append message: emailadmin pt Não foi possível anexar Mensagem:
|
||||||
|
create new account emailadmin pt criar nova conta
|
||||||
|
cyrus imap server emailadmin pt Servidor IMAP Cyrus
|
||||||
|
cyrus imap server administration emailadmin pt Administração do servidor IMAP Cyrus
|
||||||
|
default emailadmin pt Por omissão
|
||||||
|
deliver extern emailadmin pt Entrega externa
|
||||||
|
displaying html messages is disabled emailadmin pt exibir mensagens em HTML é desativada
|
||||||
|
displaying plain messages is disabled emailadmin pt exibição de mensagens simples é desativado
|
||||||
|
do you really want to delete this profile emailadmin pt Deseja relamente eliminar este perfil
|
||||||
|
domainname emailadmin pt Nome de domínio
|
||||||
|
edit email settings emailadmin pt Editar configurações do correio electrónico
|
||||||
|
email account active emailadmin pt Conta de correio electrónico activa
|
||||||
|
email address emailadmin pt Endereço de correio electrónico
|
||||||
|
enable cyrus imap server administration emailadmin pt Activar administração do servidor IMAP Cyrus
|
||||||
|
enable sieve emailadmin pt Activar Sieve
|
||||||
|
encryption settings emailadmin pt Definições de cifragem
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin pt Insira o seu domínio de correio electrónico por omissão (de: utilizador@domínio)
|
||||||
|
entry saved emailadmin pt Registo guardado
|
||||||
|
error saving the entry!!! emailadmin pt Erro ao guardar o registo!!!
|
||||||
|
event details follow emailadmin pt Seguem detalhes do evento
|
||||||
|
file rejected, no %2. is:%1 emailadmin pt Arquivo rejeitado, sem% 2. É: 1%
|
||||||
|
forward also to emailadmin pt Reencaminhar também para
|
||||||
|
forward email's to emailadmin pt Reencaminhar mensagens para
|
||||||
|
forward only emailadmin pt Reencaminhar apenas
|
||||||
|
global options emailadmin pt Opções gerais
|
||||||
|
hostname or ip emailadmin pt Nome do host ou IP
|
||||||
|
if different from email address emailadmin pt se for diferente do endereço de email
|
||||||
|
imap admin password admin pt Senha do administrador IMAP
|
||||||
|
imap admin user admin pt Utilizador do administrador IMAP
|
||||||
|
imap c-client version < 2001 emailadmin pt Versão C-Client IMAP < 2001
|
||||||
|
imap server emailadmin pt Servidor IMAP
|
||||||
|
imap server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor IMAP
|
||||||
|
imap server logintyp emailadmin pt Tipo de acesso do servidor IMAP
|
||||||
|
imap server port emailadmin pt Porto do servidor IMAP
|
||||||
|
imap/pop3 server name emailadmin pt Nome do servidor IMAP/POP3
|
||||||
|
importance emailadmin pt Importância
|
||||||
|
in mbyte emailadmin pt em MBytes
|
||||||
|
ldap basedn emailadmin pt Base DN LDAP
|
||||||
|
ldap server emailadmin pt Servidor LDAP
|
||||||
|
ldap server accounts dn emailadmin pt DN das contas de servidor LDAP
|
||||||
|
ldap server admin dn emailadmin pt DN do administrador de servidor LDAP
|
||||||
|
ldap server admin password emailadmin pt Senha do administrador de servidor LDAP
|
||||||
|
ldap server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor LDAP
|
||||||
|
ldap settings emailadmin pt Configurações do LDAP
|
||||||
|
leave empty for no quota emailadmin pt Deixar vazio para quota sem limites
|
||||||
|
mail settings admin pt Configurações do correio electrónico
|
||||||
|
name of organisation emailadmin pt Nome da empresa
|
||||||
|
no alternate email address emailadmin pt Sem endereço de correio electrónico alternativo
|
||||||
|
no forwarding email address emailadmin pt Sem endereço de correio electrónico para reencaminhamento
|
||||||
|
no plain text part found emailadmin pt nenhuma parte de texto simples encontrado
|
||||||
|
order emailadmin pt Ordem
|
||||||
|
organisation emailadmin pt Empresa
|
||||||
|
pop3 server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor POP3
|
||||||
|
pop3 server port emailadmin pt Porto de servidor POP3
|
||||||
|
postfix with ldap emailadmin pt Postfix com LDAP
|
||||||
|
profile access rights emailadmin pt Perfil de direitos de acesso
|
||||||
|
profile list emailadmin pt Lista de perfis
|
||||||
|
profile name emailadmin pt Nome do perfil
|
||||||
|
qmaildotmode emailadmin pt Quota do correio electrónico no modo Idot
|
||||||
|
quota settings emailadmin pt Configurações da quota
|
||||||
|
quota size in mbyte emailadmin pt tamanho da quota em MBytes
|
||||||
|
remove emailadmin pt Remover
|
||||||
|
required pear class mail/mimedecode.php not found. emailadmin pt Classe PEAR requeridos Correio / mimeDecode.php não encontrado.
|
||||||
|
select type of imap/pop3 server emailadmin pt Seleccionar tipo de servidor IMAP/POP3
|
||||||
|
select type of smtp server emailadmin pt Seleccionar tipo de servidor SMTP
|
||||||
|
server settings emailadmin pt Definições do servidor
|
||||||
|
sieve server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor Sieve
|
||||||
|
sieve server port emailadmin pt Porto do servidor Sieve
|
||||||
|
sieve settings emailadmin pt Configurações do SIeve
|
||||||
|
smtp authentication emailadmin pt Autenticação SMTP
|
||||||
|
smtp options emailadmin pt Opções do SMTP
|
||||||
|
smtp server name emailadmin pt Nome do servidor SMTP
|
||||||
|
smtp settings emailadmin pt Definições do SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor SMTP
|
||||||
|
smtp-server port emailadmin pt Porto do servidor SMTP
|
||||||
|
standard emailadmin pt Por omissão
|
||||||
|
standard imap server emailadmin pt Servidor IMAP por omissão
|
||||||
|
standard pop3 server emailadmin pt Servidor POP3 por omissão
|
||||||
|
standard smtp-server emailadmin pt Servidor SMTP por omissão
|
||||||
|
templates emailadmin pt Templates
|
||||||
|
the mimeparser can not parse this message. emailadmin pt O mimeparser não pode analisar estas mensagem.
|
||||||
|
this php has no imap support compiled in!! emailadmin pt O PHP não tem suporte de IMAP compilado!!
|
||||||
|
use default emailadmin pt Utilizar definições por omissão
|
||||||
|
use ldap defaults emailadmin pt Utilizar definições por omissão do LDAP
|
||||||
|
use smtp auth emailadmin pt Utilizar autenticação SMTP
|
||||||
|
use tls authentication emailadmin pt Utilizar autenticação TLS
|
||||||
|
use tls encryption emailadmin pt Utilizar cifra TLS
|
||||||
|
user can edit forwarding address emailadmin pt O utilizador pode editar endereços reencaminhados
|
||||||
|
username (standard) emailadmin pt Nome de utilizador (por omissão)
|
||||||
|
username@domainname (virtual mail manager) emailadmin pt utilizador@dominio (Gestor virtual de correio electrónico)
|
||||||
|
users can define their own emailaccounts emailadmin pt Os utilizadores podem definir as suas contas de correio electrónico
|
||||||
|
virtual mail manager emailadmin pt Gestor virtual de correio electrónico
|
||||||
|
your name emailadmin pt O seu nome
|
||||||
|
@ -664,3 +664,178 @@ you need to select some users first! admin ru Сначала нужно выбр
|
|||||||
you will need to remove the subcategories before you can delete this category admin ru Категорию можно удалить только после удаления всех её подкатегорий!
|
you will need to remove the subcategories before you can delete this category admin ru Категорию можно удалить только после удаления всех её подкатегорий!
|
||||||
your last submission was less then %1 days ago! admin ru Последний ввод был менее %1 дней назад!
|
your last submission was less then %1 days ago! admin ru Последний ввод был менее %1 дней назад!
|
||||||
your session could not be verified. admin ru Сессия не может быть проверена
|
your session could not be verified. admin ru Сессия не может быть проверена
|
||||||
|
%1 entries deleted. emailadmin ru %1 записи удалены.
|
||||||
|
(imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver) emailadmin ru (класс IMAP должен поддерживать возможность запроса соответствующего параметра конфигурации и передачи серверу IMAP как квоту по умолчанию)
|
||||||
|
(no subject) emailadmin ru (без темы)
|
||||||
|
account '%1' not found !!! emailadmin ru Учетная запись '%1' не найдена !!!
|
||||||
|
active templates emailadmin ru Активные шаблоны
|
||||||
|
add new email address: emailadmin ru Добавить новый адрес эл. почты:
|
||||||
|
add profile emailadmin ru Добавить Профиль
|
||||||
|
admin dn emailadmin ru администратор домена
|
||||||
|
admin password emailadmin ru Пароль администратора
|
||||||
|
admin username emailadmin ru Имя входа администратора
|
||||||
|
advanced options emailadmin ru Расширенные настройки
|
||||||
|
alternate email address emailadmin ru Добавочный адрес эл. почты
|
||||||
|
any application emailadmin ru Любое приложение
|
||||||
|
any group emailadmin ru Любая группа
|
||||||
|
any user emailadmin ru любой пользователь
|
||||||
|
back to admin/grouplist emailadmin ru Назад к Администрированию/Списку групп
|
||||||
|
back to admin/userlist emailadmin ru Назад к Администрированию/Списку пользователей
|
||||||
|
bad login name or password. emailadmin ru Неверное имя пользователя или пароль.
|
||||||
|
bad or malformed request. server responded: %s emailadmin ru Неверный или нераспознанный запрос. Ответ Сервера: %s
|
||||||
|
bad request: %s emailadmin ru Неверный запрос: %s
|
||||||
|
can be used by application emailadmin ru Может быть использовано приложением
|
||||||
|
can be used by group emailadmin ru Может быть использовано группой
|
||||||
|
can be used by user emailadmin ru может быть использовано пользователем
|
||||||
|
connection dropped by imap server. emailadmin ru Соединение разорвано сервером IMAP
|
||||||
|
continue emailadmin ru Продолжить
|
||||||
|
could not append message: emailadmin ru Не могу добавить сообщение
|
||||||
|
could not complete request. reason given: %s emailadmin ru Не могу завершить запрос. Возможная Причина: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin ru Не могу установить защищенное соединение с сервером IMAP. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin ru CRAM-MD5 и DIGEST-MD5 требуют установленного пакета Auth_SASL.
|
||||||
|
cyrus imap server emailadmin ru IMAP сервер Cyrus
|
||||||
|
cyrus imap server administration emailadmin ru администрирование IMAP сервера Cyrus
|
||||||
|
default emailadmin ru по умолчанию
|
||||||
|
deliver extern emailadmin ru доставить внешний
|
||||||
|
displaying html messages is disabled emailadmin ru Показ сообщений как HTML отключен
|
||||||
|
displaying plain messages is disabled emailadmin ru Показ сообщений как текст отключен.
|
||||||
|
do not validate certificate emailadmin ru не проверять сертификат
|
||||||
|
do you really want to delete this profile emailadmin ru Вы уверены, что хотите удалить этот Профиль
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin ru Вы уверены что хотите очистить фильтр для создания списка Профилей
|
||||||
|
domainname emailadmin ru Имя Домена
|
||||||
|
edit email settings emailadmin ru Редактировать настройки почты
|
||||||
|
email account active emailadmin ru Учетная запись включена
|
||||||
|
email address emailadmin ru Адрес эл. почты
|
||||||
|
email settings common ru Настройки почты
|
||||||
|
emailadmin emailadmin ru Администрирование Почты
|
||||||
|
emailadmin: group assigned profile common ru Администрирование почты: Назначение профиля группы.
|
||||||
|
emailadmin: user assigned profile common ru Администрирование почты: Назначения профиля пользователя
|
||||||
|
enable cyrus imap server administration emailadmin ru включить администрирование IMAP сервера Cyrus
|
||||||
|
enable sieve emailadmin ru Включить Sieve
|
||||||
|
encrypted connection emailadmin ru зашифрованное соединение
|
||||||
|
encryption settings emailadmin ru Настройки шифрования
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin ru Укажите ваш почтовый домен по умолчанию (от: user@domain)
|
||||||
|
entry saved emailadmin ru Запись сохранена.
|
||||||
|
error connecting to imap server. %s : %s. emailadmin ru Ошибка соединения с сервером IMAP. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin ru Ошибка соединения с сервером IMAP: [%s] %s.
|
||||||
|
error deleting entry! emailadmin ru Ошибка при удалении записи!
|
||||||
|
error saving account! emailadmin ru Ошибка сохранения учётной записи!
|
||||||
|
error saving the entry!!! emailadmin ru Ошибка при сохранении записи!
|
||||||
|
event details follow emailadmin ru Детали события следуют
|
||||||
|
file rejected, no %2. is:%1 emailadmin ru Файл отвергнут, no %2. Is:%1
|
||||||
|
filtered by account emailadmin ru отфильтровано по Учетной записи
|
||||||
|
filtered by group emailadmin ru отфильтровано по группе
|
||||||
|
forward also to emailadmin ru Переслать также в
|
||||||
|
forward email's to emailadmin ru Переслать письма в
|
||||||
|
forward only emailadmin ru Только переслать
|
||||||
|
global options emailadmin ru Общие настройки
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin ru При использовании SSL или TLS, у вас должен быть установлен PHP с загруженным расширением openssl
|
||||||
|
imap admin password admin ru пароль администратора IMAP
|
||||||
|
imap admin user admin ru Имя пользователя для администратора IMAP
|
||||||
|
imap c-client version < 2001 emailadmin ru Версия C-клиента IMAP < 2001
|
||||||
|
imap server emailadmin ru Сервер IMAP
|
||||||
|
imap server closed the connection. emailadmin ru Сервер IMAP разорвал соединение.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin ru Сервер IMAP разорвал соединение. Сервер сообщил: %s
|
||||||
|
imap server hostname or ip address emailadmin ru Имя сервера IMAP или его ip-адрес
|
||||||
|
imap server logintyp emailadmin ru Тип входа сервера IMAP
|
||||||
|
imap server name emailadmin ru Имя сервера imap
|
||||||
|
imap server port emailadmin ru Порт сервера IMAP
|
||||||
|
imap/pop3 server name emailadmin ru Имя сервера IMAP/POP3
|
||||||
|
importance emailadmin ru Значение
|
||||||
|
in mbyte emailadmin ru В мегабайтах
|
||||||
|
inactive emailadmin ru Неактивно
|
||||||
|
ldap basedn emailadmin ru Начальный DN LDAP
|
||||||
|
ldap server emailadmin ru Сервер LDAP
|
||||||
|
ldap server accounts dn emailadmin ru DN учетных записей сервера LDAP
|
||||||
|
ldap server admin dn emailadmin ru DN администратора сервера LDAP
|
||||||
|
ldap server admin password emailadmin ru Пароль администратора сервера LDAP
|
||||||
|
ldap server hostname or ip address emailadmin ru Имя сервера LDAP или его ip-адрес
|
||||||
|
ldap settings emailadmin ru Настройки LDAP
|
||||||
|
leave empty for no quota emailadmin ru Оставьте пустым для отключения квот
|
||||||
|
mail settings admin ru Настройки почты
|
||||||
|
manage stationery templates emailadmin ru Управление бланками шаблонов
|
||||||
|
mb used emailadmin ru Испоьлзуется MB
|
||||||
|
name of organisation emailadmin ru Название организации
|
||||||
|
no alternate email address emailadmin ru Нет дополнительного эл. адреса
|
||||||
|
no encryption emailadmin ru Без шифрования
|
||||||
|
no forwarding email address emailadmin ru Нет адреса перенаправления
|
||||||
|
no message returned. emailadmin ru Нет ответа
|
||||||
|
no plain text part found emailadmin ru Не найдена текстовая часть
|
||||||
|
no supported imap authentication method could be found. emailadmin ru Поддерживаемый метод авторизации IMAP не найден
|
||||||
|
order emailadmin ru Упорядочить
|
||||||
|
organisation emailadmin ru Организация
|
||||||
|
plesk can't rename users --> request ignored emailadmin ru Plesk не может переименовать пользователей --> запрос проигнорирован
|
||||||
|
plesk imap server (courier) emailadmin ru Сервер IMAP Plesk (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin ru Не найден скрипт '%1' почты Plesk!!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin ru Plesk требует длины пароля не менее 5 символов, не содержащий имени аккаунта --> пароль НЕ установлен!!!
|
||||||
|
plesk smtp-server (qmail) emailadmin ru Plesk SMTP сервер (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin ru Имя компьютера или ip-адрес сервера POP3
|
||||||
|
pop3 server port emailadmin ru Порт сервера POP3
|
||||||
|
port emailadmin ru Порт
|
||||||
|
postfix with ldap emailadmin ru Postfix с LDAP
|
||||||
|
processing of file %1 failed. failed to meet basic restrictions. emailadmin ru Обработка файла %1 прервана. Не удалось удовлетворить основные ограничения.
|
||||||
|
profile access rights emailadmin ru права доступа к профилю
|
||||||
|
profile is active emailadmin ru профиль активен
|
||||||
|
profile list emailadmin ru Список профиля
|
||||||
|
profile name emailadmin ru Название профиля
|
||||||
|
qmaildotmode emailadmin ru режим qmaildot
|
||||||
|
quota settings emailadmin ru Настройки квотирования
|
||||||
|
quota size in mbyte emailadmin ru Размер квоты в МБ
|
||||||
|
remove emailadmin ru Удалить
|
||||||
|
required pear class mail/mimedecode.php not found. emailadmin ru Необходимый PEAR class Mail / mimeDecode.php не найден.
|
||||||
|
reset filter emailadmin ru Очистить фильтр
|
||||||
|
save of message %1 failed. could not save message to folder %2 due to: %3 emailadmin ru Невозможно сохранить сообщение %1 . Не могу сохранить сообщение в папку %2 по причине: %3
|
||||||
|
saving of message %1 failed. destination folder %2 does not exist. emailadmin ru Сохранение сообщения %1 не удалось. Папка назначения %2 не существует.
|
||||||
|
select type of imap server emailadmin ru Выбор типа сервера IMAP
|
||||||
|
select type of imap/pop3 server emailadmin ru Выбор типа сервера IMAP/POP3
|
||||||
|
select type of smtp server emailadmin ru Выбор типа сервера SMTP
|
||||||
|
send using this email-address emailadmin ru Отправить с этого адреса eMail
|
||||||
|
server settings emailadmin ru Настройки сервера
|
||||||
|
sieve server hostname or ip address emailadmin ru Имя компьютера или IP сервера Sieve
|
||||||
|
sieve server port emailadmin ru Порт сервера Sieve
|
||||||
|
sieve settings emailadmin ru Настройки Sieve
|
||||||
|
smtp authentication emailadmin ru Авторизация SMTP
|
||||||
|
smtp options emailadmin ru Параметры SMTP
|
||||||
|
smtp server name emailadmin ru Имя сервера SMTP
|
||||||
|
smtp settings emailadmin ru Установки SMTP
|
||||||
|
smtp-server hostname or ip address emailadmin ru Имя компьютера или IP-адрес сервера SMTP
|
||||||
|
smtp-server port emailadmin ru Порт сервера SMTP
|
||||||
|
standard emailadmin ru Стандартный
|
||||||
|
standard imap server emailadmin ru Стандартный IMAP сервер
|
||||||
|
standard pop3 server emailadmin ru Стандартный POP3 сервер
|
||||||
|
standard smtp-server emailadmin ru Стандартный SMTP сервер
|
||||||
|
starts with emailadmin ru Начинается с
|
||||||
|
stationery emailadmin ru Бланк
|
||||||
|
templates emailadmin ru Шаблоны
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin ru Сервер IMAP не сообщил о поддержке выбранного метода авторизации. Пожалуйста свяжитесь со своим системным администратором.
|
||||||
|
the mimeparser can not parse this message. emailadmin ru Обработчик MIME не может обработать это сообщение.
|
||||||
|
this php has no imap support compiled in!! emailadmin ru Эта версия PHP собрана без поддержки IMAP!!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin ru Для использования соединения TLS, у вас должен быть запущен PHP 5.1.0 или выше.
|
||||||
|
unexpected response from server to authenticate command. emailadmin ru Непредусмотренный ответ сервера на команду AUTHENTICATE.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin ru Непредусмотренный ответ сервера на сигнал Digest-MD5.
|
||||||
|
unexpected response from server to login command. emailadmin ru Непредусмотренный ответ сервера на команду LOGIN.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin ru Неизвестный IMAP-ответ от сервера. Сервер сообщил: %s
|
||||||
|
unsupported action '%1' !!! emailadmin ru Неподдерживаемое действие '%1' !!!
|
||||||
|
update current email address: emailadmin ru Обновить текущий адрес эл.почты:
|
||||||
|
use default emailadmin ru Используйте значение по умолчанию
|
||||||
|
use ldap defaults emailadmin ru Использовать настройки LDAP по умолчанию
|
||||||
|
use predefined username and password defined below emailadmin ru Использовать предопределенное имя пользователя и пароль указанный ниже
|
||||||
|
use smtp auth emailadmin ru Использовать авторизацию SMTP
|
||||||
|
use tls authentication emailadmin ru Использовать авторизацию TLS
|
||||||
|
use tls encryption emailadmin ru Использовать шифрование TLS
|
||||||
|
use users email-address (as seen in useraccount) emailadmin ru Используйте адреса эл.почты пользователя, как указано в настройках аккаунта пользователя.
|
||||||
|
user can edit forwarding address emailadmin ru Ползователь может редактировать адрес пересылки.
|
||||||
|
userid@domain eg. u1234@domain emailadmin ru UserId@domain например u1234@domain
|
||||||
|
username (standard) emailadmin ru Имя пользователя (стандартное)
|
||||||
|
username/password defined by admin emailadmin ru Имя пользователя/Пароль установлены администратором
|
||||||
|
username@domainname (virtual mail manager) emailadmin ru username@domainname (Менеджер Виртуальной почты)
|
||||||
|
users can define their own emailaccounts emailadmin ru Пользователь может назначать свои собственные учетные записи эл. почты.
|
||||||
|
users can define their own identities emailadmin ru Пользователи могут устанавливать свои собственные данные идентификации
|
||||||
|
users can define their own signatures emailadmin ru Пользователи могут устанавливать свои собственные подписи
|
||||||
|
users can utilize these stationery templates emailadmin ru Пользователи могут использовать эти бланки шаблонов
|
||||||
|
vacation messages with start- and end-date require an admin account to be set emailadmin ru Сообщения автоответчика с датами начала и окончания требуют установленной учетной записи администратора!
|
||||||
|
virtual mail manager emailadmin ru Менеджер Виртуальной почты
|
||||||
|
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin ru Да, использовать учётные данные, указанные ниже только для предупреждений и напоминаний, в остальных случаях использовать учётные данные текущего пользователя.
|
||||||
|
yes, use credentials of current user or if given credentials below emailadmin ru Да, использовать учётные данные текущего пользователя, или если указаны учётные данные ниже.
|
||||||
|
you have received a new message on the emailadmin ru Вы получили сообщения на
|
||||||
|
your name emailadmin ru Ваше имя
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
country admin rw igihugu
|
country admin rw igihugu
|
||||||
email address admin rw email
|
email address admin rw email
|
||||||
re-enter password admin rw Ongera wandike Urufunguzo
|
re-enter password admin rw Ongera wandike Urufunguzo
|
||||||
|
email address emailadmin rw email
|
||||||
|
@ -705,3 +705,210 @@ you need to select some users first! admin sk Najprv vyberte nejakého používa
|
|||||||
you will need to remove the subcategories before you can delete this category admin sk Než odstránite túto kategóriu, musíte odstrániť všetky podkategórie!
|
you will need to remove the subcategories before you can delete this category admin sk Než odstránite túto kategóriu, musíte odstrániť všetky podkategórie!
|
||||||
your last submission was less then %1 days ago! admin sk Naposledy ste odosielali pred menej než %1 dňami!
|
your last submission was less then %1 days ago! admin sk Naposledy ste odosielali pred menej než %1 dňami!
|
||||||
your session could not be verified. admin sk Vašu reláciu sa nepodarilo overiť.
|
your session could not be verified. admin sk Vašu reláciu sa nepodarilo overiť.
|
||||||
|
%1 entries deleted. emailadmin sk %1 položiek bolo odstránených.
|
||||||
|
(imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver) emailadmin sk (imapclass musí podporovať túto funkcionalitu - získať príslušnú hodnotu a odovzdať ju ako predvolenú kvótu serveru IMAP)
|
||||||
|
(no subject) emailadmin sk (bez predmetu)
|
||||||
|
account '%1' not found !!! emailadmin sk Účet '%1' sa nenašiel !!!
|
||||||
|
account deleted. emailadmin sk Účet bol odstránený.
|
||||||
|
account not found! common sk Účet sa nenašiel!
|
||||||
|
account saved. emailadmin sk Účet bol uložený.
|
||||||
|
active templates emailadmin sk Aktívne šablóny
|
||||||
|
add new email address: emailadmin sk Pridať novú E-mailovú adresu:
|
||||||
|
add profile emailadmin sk Pridať profil
|
||||||
|
admin dn emailadmin sk Správcov dn
|
||||||
|
admin password emailadmin sk Heslo správcu
|
||||||
|
admin username emailadmin sk Používateľské meno správcu
|
||||||
|
advanced options emailadmin sk Pokročilé možnosti
|
||||||
|
alternate email address emailadmin sk Alternatívna E-mailová adresa
|
||||||
|
and logged in emailadmin sk a prihlásený
|
||||||
|
any application emailadmin sk Ktorákoľvek aplikácia
|
||||||
|
any group emailadmin sk Ktorákoľvek skupina
|
||||||
|
any user emailadmin sk Ktorýkoľvek používateľ
|
||||||
|
back to admin/grouplist emailadmin sk Späť na Správu/Skupiny
|
||||||
|
back to admin/userlist emailadmin sk Späť na Správu/Používateľov
|
||||||
|
bad login name or password. emailadmin sk Chybné prihlasovacie meno alebo heslo.
|
||||||
|
bad or malformed request. server responded: %s emailadmin sk Chybná požiadavka. Odpoveď servera: %s
|
||||||
|
bad request: %s emailadmin sk Chybná požiadavka: %s
|
||||||
|
can be used by application emailadmin sk Môže byť použité aplikáciou
|
||||||
|
can be used by group emailadmin sk Môže byť použité skupinou
|
||||||
|
can be used by user emailadmin sk Môže byť použité používateľom
|
||||||
|
connection dropped by imap server. emailadmin sk Spojenie prerušené IMAP serverom.
|
||||||
|
connection is not secure! everyone can read eg. your credentials. emailadmin sk Pripojenie NIE je bezpečné! Ktokoľvek si môže napr. prečítať vaše prihlasovacie údaje.
|
||||||
|
continue emailadmin sk Pokračovať
|
||||||
|
could not append message: emailadmin sk Nepodarilo sa pripojiť správu:
|
||||||
|
could not complete request. reason given: %s emailadmin sk Nemožno dokončiť požiadavku. Dôvod: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin sk Nepodarilo sa nadviazať zabezpečené pripojenie k IMAP serveru. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin sk CRAM-MD5 alebo DIGEST-MD5 vyžaduje, aby bol nainštalovaný balík Auth_SASL.
|
||||||
|
create new account emailadmin sk Vytvoriť nový účet
|
||||||
|
create new identity emailadmin sk Vytvoriť novú identitu
|
||||||
|
cyrus imap server emailadmin sk Cyrus IMAP Server
|
||||||
|
cyrus imap server administration emailadmin sk Správa servera Cyrus IMAP
|
||||||
|
default emailadmin sk Predvolené
|
||||||
|
delete identity emailadmin sk Odstrániť identitu
|
||||||
|
delete this account emailadmin sk Odstrániť tento účet
|
||||||
|
deliver extern emailadmin sk Doručiť extern
|
||||||
|
displaying html messages is disabled emailadmin sk Zobrazovanie HTML správ je vypnuté
|
||||||
|
displaying plain messages is disabled emailadmin sk Zobrazovanie správ ako čistého textu je vypnuté.
|
||||||
|
do not validate certificate emailadmin sk Neoverovať certifikát
|
||||||
|
do you really want to delete this profile emailadmin sk Naozaj chcete odstrániť tento profil?
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin sk Naozaj chcete vynulovať filter pre výpis profilu?
|
||||||
|
domainname emailadmin sk Názov domény
|
||||||
|
edit email settings emailadmin sk Upraviť nastavenia E-mailu
|
||||||
|
email account active emailadmin sk E-mailový účet je aktívny
|
||||||
|
email address emailadmin sk E-mailová adresa
|
||||||
|
email settings common sk Nastavenia E-mailu
|
||||||
|
emailadmin emailadmin sk EMailAdmin
|
||||||
|
emailadmin: group assigned profile common sk EMailAdmin: skupinovo priradený profil
|
||||||
|
emailadmin: user assigned profile common sk EMailAdmin: používateľsky priradený profil
|
||||||
|
enable cyrus imap server administration emailadmin sk Zapnúť správu servera Cyrus IMAP
|
||||||
|
enable sieve emailadmin sk Zapnúť Sieve
|
||||||
|
encrypted connection emailadmin sk Šifrované spojenie
|
||||||
|
encryption settings emailadmin sk Nastavenia šifrovania
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin sk Zadajte vašu predvolenú doménu (z tvaru: user@domain)
|
||||||
|
entry saved emailadmin sk Položka bola uložená
|
||||||
|
error connecting to imap server. %s : %s. emailadmin sk Chyba počas pripájania k IMAP serveru. %s : %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin sk Chyba počas pripájania k IMAP serveru: [%s] %s.
|
||||||
|
error deleting entry! emailadmin sk Chyba pri odstraňovaní položky!
|
||||||
|
error saving account! emailadmin sk Chyba pri ukladaní účtu!
|
||||||
|
error saving the entry!!! emailadmin sk Chyba pri ukladaní položky!!!
|
||||||
|
error, no username! emailadmin sk Chýba používateľské meno!
|
||||||
|
event details follow emailadmin sk Podrobnosti o udalosti:
|
||||||
|
failed to delete account! emailadmin sk Nepodarilo sa odstrániť účet!
|
||||||
|
file rejected, no %2. is:%1 emailadmin sk Súbor odmietnutý, žiadny %2. Je:%1
|
||||||
|
filtered by account emailadmin sk Filtrované podľa Účtu
|
||||||
|
filtered by group emailadmin sk Filtrované podľa Skupiny
|
||||||
|
forward also to emailadmin sk Tiež preposlať (komu)
|
||||||
|
forward email's to emailadmin sk Preposlať emaily (komu)
|
||||||
|
forward only emailadmin sk Preposlať iba
|
||||||
|
forward only disables imap mailbox / storing of mails and just forwards them to given address. emailadmin sk Preposielanie iba vypne IMAP schránku / ukladanie správ a jednoducho ich prepošle na uvedenú adresu.
|
||||||
|
global options emailadmin sk Globálne možnosti
|
||||||
|
hostname or ip emailadmin sk Názov stroja alebo IP
|
||||||
|
how username get constructed emailadmin sk Z čoho sa skladá používateľské meno
|
||||||
|
identity deleted emailadmin sk Identita bola odstránená
|
||||||
|
identity saved. emailadmin sk Identita bola uložená.
|
||||||
|
if different from email address emailadmin sk ak sa líši od e-mailovej adresy
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin sk Ak používate SSL alebo TLS, musíte mať nahraté rozšírenie PHP openssl.
|
||||||
|
if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that) emailadmin sk Ak určíte port 5190 pre Sieve, vynútite tým SSL pre Sieve (je potrebná podpora na strane servera)
|
||||||
|
imap admin password admin sk Heslo správcu IMAP
|
||||||
|
imap admin user admin sk Používateľ pre správu IMAP
|
||||||
|
imap c-client version < 2001 emailadmin sk IMAP C-klient verzia < 2001
|
||||||
|
imap server emailadmin sk IMAP server
|
||||||
|
imap server closed the connection. emailadmin sk IMAP server ukončil spojenie.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin sk IMAP server ukončil spojenie. Odpoveď servera: %s
|
||||||
|
imap server hostname or ip address emailadmin sk Názov (hostname) alebo IP adresa IMAP servera
|
||||||
|
imap server logintyp emailadmin sk Typ prihlásenia IMAP servera
|
||||||
|
imap server name emailadmin sk Názov IMAP servera
|
||||||
|
imap server port emailadmin sk Port IMAP servera
|
||||||
|
imap/pop3 server name emailadmin sk názov IMAP/POP3 servera
|
||||||
|
importance emailadmin sk Dôležitosť
|
||||||
|
in mbyte emailadmin sk v Megabajtoch
|
||||||
|
inactive emailadmin sk Neaktívne
|
||||||
|
ldap basedn emailadmin sk LDAP basedn
|
||||||
|
ldap server emailadmin sk LDAP server
|
||||||
|
ldap server accounts dn emailadmin sk DN účtov LDAP servera
|
||||||
|
ldap server admin dn emailadmin sk DN správcu LDAP servera
|
||||||
|
ldap server admin password emailadmin sk Heslo správcu LDAP servera
|
||||||
|
ldap server hostname or ip address emailadmin sk Názov (hostname) alebo IP adresa LDAP servera
|
||||||
|
ldap settings emailadmin sk Nastavenia LDAP
|
||||||
|
leave empty for no quota emailadmin sk Ak nechcete kvóty, ponechajte prázdne
|
||||||
|
mail settings admin sk Nastavenia Pošty
|
||||||
|
manual entry emailadmin sk Ručná položka
|
||||||
|
name of organisation emailadmin sk Názov organizácie
|
||||||
|
no alternate email address emailadmin sk Bez alternatívnej E-mailovej adresy
|
||||||
|
no encryption emailadmin sk Bez šifrovania
|
||||||
|
no forwarding email address emailadmin sk Bez emailovej adresy pre preposielanie
|
||||||
|
no message returned. emailadmin sk Žiadne správy sa nevrátili.
|
||||||
|
no plain text part found emailadmin sk Nebola nájdená žiadna čisto textová časť
|
||||||
|
no sieve support detected, either fix configuration manually or leave it switched off. emailadmin sk Nezistila sa podpora Sieve, prosím opravte nastavenia ručne alebo ponechajte voľbu vypnutú.
|
||||||
|
no supported imap authentication method could be found. emailadmin sk Nenašiel som žiadnu podporovanú overovaciu metódu IMAP.
|
||||||
|
order emailadmin sk Poradie
|
||||||
|
organisation emailadmin sk Organizácia
|
||||||
|
plesk can't rename users --> request ignored emailadmin sk Plesk používatelia sa nedajú premenovať --> požiadavka ignorovaná
|
||||||
|
plesk imap server (courier) emailadmin sk Plesk IMAP Server (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin sk Plesk mail script '%1' sa nenašlo !!!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin sk Plesk vyžaduje, aby heslá mali aspoň 5 znakov a neobsahovali názov účtu --> heslo NEBOLO nastavené!!!
|
||||||
|
plesk smtp-server (qmail) emailadmin sk Plesk SMTP-Server (qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin sk Názov (hostname) alebo IP adresa POP3 servera
|
||||||
|
pop3 server port emailadmin sk Port POP3 servera
|
||||||
|
port emailadmin sk Port
|
||||||
|
postfix with ldap emailadmin sk Postfix + LDAP
|
||||||
|
processing of file %1 failed. failed to meet basic restrictions. emailadmin sk Spracovanie súboru %1 zlyhalo. Nesplnil základné obmedzenia.
|
||||||
|
profile access rights emailadmin sk Prístupové práva profilu
|
||||||
|
profile is active emailadmin sk Profil je aktívny
|
||||||
|
profile list emailadmin sk Zoznam profilov
|
||||||
|
profile name emailadmin sk Názov profilu
|
||||||
|
qmaildotmode emailadmin sk qmail bodkový režim
|
||||||
|
quota settings emailadmin sk Nastavenia kvóty
|
||||||
|
quota size in mbyte emailadmin sk Veľkosť kvóty v Megabajtoch
|
||||||
|
relay access checked emailadmin sk Relačný prístup bol skontrolovaný
|
||||||
|
remove emailadmin sk Odstrániť
|
||||||
|
required pear class mail/mimedecode.php not found. emailadmin sk Nenašla sa požadovaná trieda PEAR Mail / mimeDecode.php
|
||||||
|
reset filter emailadmin sk Vynulovať filter
|
||||||
|
save of message %1 failed. could not save message to folder %2 due to: %3 emailadmin sk Uloženie správy %1 zlyhalo. Nepodarilo sa uložiť správu do priečinka %2 z dôvodu: %3
|
||||||
|
saving of message %1 failed. destination folder %2 does not exist. emailadmin sk Ukladanie správy %1 zlyhalo. Cieľový priečinok %2 neexistuje.
|
||||||
|
secure connection emailadmin sk Bezpečné pripojenie
|
||||||
|
select type of imap server emailadmin sk Vyberte typ IMAP servera
|
||||||
|
select type of imap/pop3 server emailadmin sk Vyberte typ IMAP/POP3 servera
|
||||||
|
select type of smtp server emailadmin sk Vyberte typ SMTP servera
|
||||||
|
send using this email-address emailadmin sk Odoslať pomocou tejto e-mailovej adresy
|
||||||
|
server settings emailadmin sk Nastavenia servera
|
||||||
|
sieve server hostname or ip address emailadmin sk Názov (hostname) alebo IP Sieve servera
|
||||||
|
sieve server port emailadmin sk Nort Sieve servera
|
||||||
|
sieve settings emailadmin sk Nastavenia Sieve
|
||||||
|
skip imap emailadmin sk Vynechať IMAP
|
||||||
|
skipping imap configuration! emailadmin sk Vynechávam nastavenia IMAP!
|
||||||
|
smtp authentication emailadmin sk SMTP overovanie
|
||||||
|
smtp options emailadmin sk SMTP možnosti
|
||||||
|
smtp server emailadmin sk SMTP server
|
||||||
|
smtp server name emailadmin sk Názov SMTP servera
|
||||||
|
smtp settings emailadmin sk SMTP nastavenia
|
||||||
|
smtp-server hostname or ip address emailadmin sk Názov (hostname) alebo IP adresa SMTP servera
|
||||||
|
smtp-server port emailadmin sk Port SMTP servera
|
||||||
|
standard emailadmin sk Štandard
|
||||||
|
standard identity emailadmin sk Štandardná identita
|
||||||
|
standard imap server emailadmin sk Štandardný IMAP server
|
||||||
|
standard pop3 server emailadmin sk Štandardný POP3 server
|
||||||
|
standard smtp-server emailadmin sk Štandardný SMTP server
|
||||||
|
starts with emailadmin sk Začať s
|
||||||
|
successful connected to %1 server%2. emailadmin sk Pripojenie na %1 server %2 bolo úspešne nadviazané.
|
||||||
|
switch back to standard identity to save account. emailadmin sk Prepnúť naspäť na štandardnú identitu pre uloženie účtu.
|
||||||
|
switch back to standard identity to save other account data. emailadmin sk Prepnúť naspäť na štandardnú identitu pre uloženie údajov účtu.
|
||||||
|
templates emailadmin sk Šablóny
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin sk Tento IMAP server, zdá sa, nepodporuje zvolenú overovaciu metódu. Prosím kontaktujte správcu systému.
|
||||||
|
the mimeparser can not parse this message. emailadmin sk Analyzátor MIME nedokázal spracovať túto správu.
|
||||||
|
this is not a personal mail account!\n\naccount will be deleted for all users!\n\nare you really sure you want to do that? emailadmin sk Toto NIE je osobný poštový účet!\n\nÚčet bude ostránený pre VŠETKÝCH používateľov!\n\nSte si istí že to chcete urobiť?
|
||||||
|
this php has no imap support compiled in!! emailadmin sk Toto PHP nemá zakompilovanú podporu pre IMAP !!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin sk Ak chcete používať pripojenie TLS, musíte fungovať na verzii PHP 5.1.0 alebo vyššej.
|
||||||
|
unexpected response from server to authenticate command. emailadmin sk Neočakávaná odpoveď od servera na príkaz AUTENTICATE.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin sk Neočakávaná odpoveď od servera na Digest-MD5 odpoveď.
|
||||||
|
unexpected response from server to login command. emailadmin sk Neočakávaná odpoveď od servera na príkaz LOGIN.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin sk Neznáma IMAP odpoveď od servera. Server odpovedal: %s
|
||||||
|
unsupported action '%1' !!! emailadmin sk Nepodporovaná akcia '%1' !!!
|
||||||
|
update current email address: emailadmin sk Aktualizovať súčasnú E-mailovú adresu:
|
||||||
|
use default emailadmin sk Použiť predvolené
|
||||||
|
use ldap defaults emailadmin sk Použiť predvolené hodnoty LDAP
|
||||||
|
use predefined username and password defined below emailadmin sk Použiť preddefinované používateľské meno a heslo, uvedené nižšie
|
||||||
|
use smtp auth emailadmin sk Použiť SMTP overovanie
|
||||||
|
use tls authentication emailadmin sk Použiť TLS overovanie
|
||||||
|
use tls encryption emailadmin sk Použiť TLS šifrovanie
|
||||||
|
use users email-address (as seen in useraccount) emailadmin sk Použiť emailové adresy používateľov (ako vidno v používateľskom účte)
|
||||||
|
user can edit forwarding address emailadmin sk Používateľ môže upraviť adresu preposielania
|
||||||
|
userid@domain eg. u1234@domain emailadmin sk PoužívateľskéID@doména napr. u1234@domain
|
||||||
|
username (standard) emailadmin sk Používateľské meno (štandardné)
|
||||||
|
username specified below for all emailadmin sk Nižšieuvedené používateľské meno pre všetkých
|
||||||
|
username/password defined by admin emailadmin sk Používateľské meno/heslo definované správcom
|
||||||
|
username@domainname (virtual mail manager) emailadmin sk používateľ@doména (Virtuálny Mail ManaGeR)
|
||||||
|
users can define their own emailaccounts emailadmin sk Používatelia môžu definovať svoje vlastné E-mailové účty
|
||||||
|
users can define their own identities emailadmin sk Používatelia môžu definovať svoje vlastné identity
|
||||||
|
users can define their own signatures emailadmin sk Používatelia môžu definovať svoje vlastné podpisy
|
||||||
|
users can utilize these stationery templates emailadmin sk Používatelia môžu využívať tieto statické šablóny
|
||||||
|
using data from mozilla ispdb for provider %1 emailadmin sk Používajú sa údaje z Mozilla ISPDB pre poskytovateľa %1
|
||||||
|
vacation messages with start- and end-date require an admin account to be set emailadmin sk Oznámenia o neprítomnosti so zadaným dátumom začiatku a konca vyžadujú,aby bol nastavený účet správcu!
|
||||||
|
virtual mail manager emailadmin sk Virtuálny MAIL ManaGeR
|
||||||
|
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin sk Áno, použiť nižšieuvedené prístupové údaje iba pre upozornenia, ináč použiť prístupové údaje aktuálneho používateľa
|
||||||
|
yes, use credentials of current user or if given credentials below emailadmin sk Áno, použiť prístupové údaje aktuálneho používateľa, alebo prístupové údaje uvedené nižšie ak sú vyplnené
|
||||||
|
you can use wizard to fix account settings or delete account. emailadmin sk Ohľadom opravy nastavení účtu alebo odstránenia účtu môžete použiť Sprievodcu.
|
||||||
|
you have received a new message on the emailadmin sk Obdržali ste novú správu ohľadom
|
||||||
|
you need to specify a forwarding address, when checking "%1"! emailadmin sk Keď vyberáte "%1" tak musíte zadať preposielaciu adresu!
|
||||||
|
your message to %1 was displayed. emailadmin sk Vaša správa pre %1 bola zobrazená.
|
||||||
|
your name emailadmin sk Vaše meno
|
||||||
|
@ -485,3 +485,155 @@ you must select a file type admin sl Izbrati morate tip datoteke
|
|||||||
you must select at least one group member. admin sl Izbrati morate najmanj enega člana skupine.
|
you must select at least one group member. admin sl Izbrati morate najmanj enega člana skupine.
|
||||||
you will need to remove the subcategories before you can delete this category admin sl Preden lahko izbrišete to kategorijo, morate izbrisati vse podkategorije!
|
you will need to remove the subcategories before you can delete this category admin sl Preden lahko izbrišete to kategorijo, morate izbrisati vse podkategorije!
|
||||||
your session could not be verified. admin sl Vaša seja ne more biti preverjena.
|
your session could not be verified. admin sl Vaša seja ne more biti preverjena.
|
||||||
|
(no subject) emailadmin sl (brez zadeve)
|
||||||
|
account '%1' not found !!! emailadmin sl Račun '%1' ni bil najden!
|
||||||
|
add new email address: emailadmin sl Dodaj nov e-naslov:
|
||||||
|
add profile emailadmin sl Dodaj profil
|
||||||
|
admin dn emailadmin sl Oskrbnikov dn
|
||||||
|
admin password emailadmin sl Oskrbnikovo geslo
|
||||||
|
admin username emailadmin sl Oskrbnikovo uporabniško ime
|
||||||
|
advanced options emailadmin sl Napredne izbire
|
||||||
|
alternate email address emailadmin sl Alternativen E-naslov
|
||||||
|
any application emailadmin sl Katerakoli aplikacija
|
||||||
|
any group emailadmin sl Katerakoli skupina
|
||||||
|
any user emailadmin sl Katerikoli uporabnik
|
||||||
|
back to admin/grouplist emailadmin sl Nazaj na Admin/Seznam skupin
|
||||||
|
back to admin/userlist emailadmin sl Nazaj na Admin/Seznam uporabnikov
|
||||||
|
bad login name or password. emailadmin sl Napačno uporabniško ime ali geslo.
|
||||||
|
bad or malformed request. server responded: %s emailadmin sl Napačna ali napačno oblikovana zahteva. Odgovor strežnika: %s
|
||||||
|
bad request: %s emailadmin sl Napačna zahteva: %s
|
||||||
|
can be used by application emailadmin sl Je lahko uporabljen iz aplikacije
|
||||||
|
can be used by group emailadmin sl Je lahko uporabljen iz skupine
|
||||||
|
can be used by user emailadmin sl Lahko uporablja uporabnik
|
||||||
|
connection dropped by imap server. emailadmin sl Strežnik IMAP je prekinil povezavo.
|
||||||
|
continue emailadmin sl Nadaljuj
|
||||||
|
could not complete request. reason given: %s emailadmin sl Ne morem dokončati zahteve. Podan vzrok: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin sl Ne morem odpreti varne povezave s strežnikom IMAP. %s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin sl CRAM-MD5 ali DIGEST-MD5 zahteva, da je nameščen paket Auth_SASL.
|
||||||
|
cyrus imap server emailadmin sl Cyrus IMAP strežnik
|
||||||
|
cyrus imap server administration emailadmin sl Upravljanje Cyrus IMAP strežnika
|
||||||
|
default emailadmin sl Privzeto
|
||||||
|
deliver extern emailadmin sl Zunanja dostava
|
||||||
|
displaying html messages is disabled emailadmin sl Prikazovanje sporočil HTML je onemogočeno
|
||||||
|
do not validate certificate emailadmin sl Ne preverjaj certifikata
|
||||||
|
do you really want to delete this profile emailadmin sl Ali res želite izbrisati ta profil?
|
||||||
|
do you really want to reset the filter for the profile listing emailadmin sl Res želite ponastaviti filter za listanje profilov?
|
||||||
|
domainname emailadmin sl Ime domene
|
||||||
|
edit email settings emailadmin sl Uredi nastavitve E-pošte
|
||||||
|
email account active emailadmin sl Nabiralnik E-pošte je aktiven
|
||||||
|
email address emailadmin sl E-naslov
|
||||||
|
email settings common sl Nastavitve E-pošte
|
||||||
|
emailadmin emailadmin sl EMailAdmin
|
||||||
|
emailadmin: group assigned profile common sl eMailAdmin: profil, dodeljen skupini
|
||||||
|
emailadmin: user assigned profile common sl eMailAdmin: profil, dodeljen uprabniku
|
||||||
|
enable cyrus imap server administration emailadmin sl Omogoči upravljanje Cyrus IMAP strežnika
|
||||||
|
enable sieve emailadmin sl Omogoči Sieve
|
||||||
|
encrypted connection emailadmin sl Kodirana povezava
|
||||||
|
encryption settings emailadmin sl Nastavitve šifriranja
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin sl Vnesite privzeto domeno (oblika: uporabnik@domena)
|
||||||
|
entry saved emailadmin sl Vnos shranjen
|
||||||
|
error connecting to imap server. %s : %s. emailadmin sl Napaka pri povezavi s strežnikom IMAP. %s: %s.
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin sl Napaka pri povezavi s strežnikom IMAP: [%s] %s.
|
||||||
|
error saving the entry!!! emailadmin sl Napaka pri shranjevanju vnosa!
|
||||||
|
event details follow emailadmin sl Sledijo podrobnosti dogodka
|
||||||
|
filtered by account emailadmin sl Filtrirano s strani računa
|
||||||
|
filtered by group emailadmin sl Filtrirano s strani skupine
|
||||||
|
forward also to emailadmin sl Posreduj tudi
|
||||||
|
forward email's to emailadmin sl Posreduj sporočila k
|
||||||
|
forward only emailadmin sl Samo posreduj
|
||||||
|
global options emailadmin sl Globalne možnosti
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin sl Če uporabljate SSL ali TLS, morate imeti naloženo razširitev PHP openssl
|
||||||
|
imap admin password admin sl Geslo oskrbnika IMAPa
|
||||||
|
imap admin user admin sl Uporabniško ime oskrbnika IMAP-a
|
||||||
|
imap c-client version < 2001 emailadmin sl IMAP C-klient različica pred 2001
|
||||||
|
imap server emailadmin sl Strežnik IMAP
|
||||||
|
imap server closed the connection. emailadmin sl Strežnik IMAP je prekinil povezavo.
|
||||||
|
imap server closed the connection. server responded: %s emailadmin sl Strežnik IMAP je prekinil povezavo. Odgovor strežnika: %s
|
||||||
|
imap server hostname or ip address emailadmin sl Ime ali IP strežnika IMAP
|
||||||
|
imap server logintyp emailadmin sl Način prijave strežnik IMAP
|
||||||
|
imap server name emailadmin sl Ime strežnika IMAP
|
||||||
|
imap server port emailadmin sl Vrata strežnika IMAP
|
||||||
|
imap/pop3 server name emailadmin sl Ime strežnika IMAP/POP3
|
||||||
|
in mbyte emailadmin sl v MB
|
||||||
|
inactive emailadmin sl Neaktivno
|
||||||
|
ldap basedn emailadmin sl Osnovni DN LDAP
|
||||||
|
ldap server emailadmin sl Strežnik LDAP
|
||||||
|
ldap server accounts dn emailadmin sl DN računov LDAP strežnika
|
||||||
|
ldap server admin dn emailadmin sl Oskrbnikov DN LDAP strežnika
|
||||||
|
ldap server admin password emailadmin sl Geslo oskrbnika LDAP strežnika
|
||||||
|
ldap server hostname or ip address emailadmin sl Ime ali IP strežnika LDAP
|
||||||
|
ldap settings emailadmin sl Nastavitve LDAP
|
||||||
|
leave empty for no quota emailadmin sl Pustite prazno za neomejeno
|
||||||
|
mail settings admin sl Nastavitve E-pošte
|
||||||
|
name of organisation emailadmin sl Ime organizacije
|
||||||
|
no alternate email address emailadmin sl Ni alternativnega E-naslova
|
||||||
|
no encryption emailadmin sl Brez šifriranja
|
||||||
|
no forwarding email address emailadmin sl Ni E-naslova za posredovanje
|
||||||
|
no message returned. emailadmin sl Ni vrnjenega sporočila.
|
||||||
|
no plain text part found emailadmin sl Ni najdenega čistega besedila
|
||||||
|
no supported imap authentication method could be found. emailadmin sl Ni najdena metoda avtentikacije IMAP.
|
||||||
|
order emailadmin sl Vrstni red
|
||||||
|
organisation emailadmin sl Organizacija
|
||||||
|
plesk can't rename users --> request ignored emailadmin sl Plesk ne more preimenovati uporabnikov --> zahteva preslišana
|
||||||
|
plesk imap server (courier) emailadmin sl Strežnik Plesk IMAP (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin sl Poštni skript Plesk '%1' ni bil najden!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin sl Plesk zahteva geslo, dolga najmanj 5 znakov in ne sme vsebovati imena računa --> geslo ni bilo nastavljeno!
|
||||||
|
plesk smtp-server (qmail) emailadmin sl Strežnik Plesk IMAP (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin sl Ime ali IP POP3 strežnika
|
||||||
|
pop3 server port emailadmin sl Vrata POP3 strežnika
|
||||||
|
port emailadmin sl Vrata
|
||||||
|
postfix with ldap emailadmin sl Končnica pri LDAP
|
||||||
|
profile access rights emailadmin sl Pravice dostopa do profila
|
||||||
|
profile is active emailadmin sl Profil je aktiven
|
||||||
|
profile list emailadmin sl Seznam profilov
|
||||||
|
profile name emailadmin sl Ime profila
|
||||||
|
qmaildotmode emailadmin sl Način za qmaildot
|
||||||
|
quota settings emailadmin sl Nastavitvev kvote
|
||||||
|
quota size in mbyte emailadmin sl Velikost kvote v MB
|
||||||
|
remove emailadmin sl Odstrani
|
||||||
|
reset filter emailadmin sl Ponastavi filter
|
||||||
|
select type of imap server emailadmin sl Izberite vrsto strežnika IMAP
|
||||||
|
select type of imap/pop3 server emailadmin sl Izberite tip IMAP/POP3 strežnika
|
||||||
|
select type of smtp server emailadmin sl Izberite tip SMTP strežnika
|
||||||
|
server settings emailadmin sl Nastavitve strežnika
|
||||||
|
sieve server hostname or ip address emailadmin sl IP ali naslov strežnika za sito (Sieve)
|
||||||
|
sieve server port emailadmin sl Vrata strežnika za sito (Sieve)
|
||||||
|
sieve settings emailadmin sl Nastavitve sita (Sieve)
|
||||||
|
smtp authentication emailadmin sl SMTP avtentikacija
|
||||||
|
smtp options emailadmin sl SMTP možnosti
|
||||||
|
smtp server name emailadmin sl ime SMTP strežnika
|
||||||
|
smtp settings emailadmin sl SMTP nastavitve
|
||||||
|
smtp-server hostname or ip address emailadmin sl Ime ali IP SMTP strežnika
|
||||||
|
smtp-server port emailadmin sl Vrata SMTP strežnika
|
||||||
|
standard emailadmin sl Standarden
|
||||||
|
standard imap server emailadmin sl Standardni IMAP strežnik
|
||||||
|
standard pop3 server emailadmin sl Standardni POP3 strežnik
|
||||||
|
standard smtp-server emailadmin sl Standardni SMTP strežnik
|
||||||
|
stationery emailadmin sl Stacionarno
|
||||||
|
templates emailadmin sl Predloge
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin sl Strežnik IMAP ne podpira izbrane metode avtentikacije. Kontaktirajte sistemskega upravitelja.
|
||||||
|
the mimeparser can not parse this message. emailadmin sl Mimeparser ne more prebrati tega sporočila.
|
||||||
|
this php has no imap support compiled in!! emailadmin sl Ta PHP ne vsebuje podpore za IMAP!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin sl Če želite uporabljati povezavo TLS, morate imeti nameščeno različico PHP 5.1.0 ali višjo.
|
||||||
|
unexpected response from server to authenticate command. emailadmin sl Nepričakovan odgovor strežnika na ukaz AUTHENTICATE.
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin sl Nepričakovan odgovor strežnika na odgovor Digest-MD5.
|
||||||
|
unexpected response from server to login command. emailadmin sl Nepričakovan odgovor strežnika na ukaz LOGIN.
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin sl Neznan odgovor IMAP s strani strežnika. Odgovor strežnika: %s
|
||||||
|
unsupported action '%1' !!! emailadmin sl Nepodprto dejanje '%1'!
|
||||||
|
update current email address: emailadmin sl Posodobi trenutni e-naslov:
|
||||||
|
use default emailadmin sl Uporabi privzeto
|
||||||
|
use ldap defaults emailadmin sl Uporabi privzeto za LDAP
|
||||||
|
use predefined username and password defined below emailadmin sl Uporabi spodnje, vnaprej določeno uporabniško ime in geslo
|
||||||
|
use smtp auth emailadmin sl Uporabi SMTP avtentikacijo
|
||||||
|
use tls authentication emailadmin sl Uporabi TLS avtentikacijo
|
||||||
|
use tls encryption emailadmin sl Uporabi TLS enkripcijo
|
||||||
|
user can edit forwarding address emailadmin sl Uporabnik lahko določa posredovalni naslov
|
||||||
|
username (standard) emailadmin sl Uporabnik (standardno)
|
||||||
|
username/password defined by admin emailadmin sl Uporabniško ime/geslo dodeljeno s strani administratorja
|
||||||
|
username@domainname (virtual mail manager) emailadmin sl uporabnik@domena (Virtual MAIL ManaGeR)
|
||||||
|
users can define their own emailaccounts emailadmin sl Uporabniki lahko določajo lastne E-poštne predale
|
||||||
|
users can define their own identities emailadmin sl Uporabniki lahko določijo lastne identitete
|
||||||
|
users can define their own signatures emailadmin sl Uporabniki lahko določijo lastne podpise
|
||||||
|
virtual mail manager emailadmin sl Virtualni upravljalec E-pošte
|
||||||
|
you have received a new message on the emailadmin sl Prejeli ste novo sporočilo na
|
||||||
|
your name emailadmin sl Vaše ime
|
||||||
|
@ -469,3 +469,109 @@ you must enter an application title. admin sv Du måste ange en titel för appli
|
|||||||
you must select a file type admin sv Du måste välja en filtyp
|
you must select a file type admin sv Du måste välja en filtyp
|
||||||
you will need to remove the subcategories before you can delete this category admin sv Du måste ta bort underkategorierna innan du kan ta bort denna kategori
|
you will need to remove the subcategories before you can delete this category admin sv Du måste ta bort underkategorierna innan du kan ta bort denna kategori
|
||||||
your session could not be verified. admin sv Din session kunde inte verifieras
|
your session could not be verified. admin sv Din session kunde inte verifieras
|
||||||
|
(no subject) emailadmin sv (ingen rubrik)
|
||||||
|
add profile emailadmin sv Skapa profil
|
||||||
|
admin dn emailadmin sv Admin dn
|
||||||
|
admin password emailadmin sv Admin lösenord
|
||||||
|
admin username emailadmin sv Admin användare
|
||||||
|
advanced options emailadmin sv Avanserade alternativ
|
||||||
|
alternate email address emailadmin sv Alternerande e-post adress
|
||||||
|
bad login name or password. emailadmin sv Ogiltigt användarna eller lösenord
|
||||||
|
bad or malformed request. server responded: %s emailadmin sv Ogiltig eller ofullständig förfrågan. Server svarade: %s
|
||||||
|
bad request: %s emailadmin sv Ogiltig förfrågan: %s
|
||||||
|
connection dropped by imap server. emailadmin sv Anslutningen stängd av IMAP server
|
||||||
|
continue emailadmin sv Fortsätt
|
||||||
|
could not complete request. reason given: %s emailadmin sv Kunde inte fullfölja förfrågan. Svaret: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin sv Kunde inte öppna en söker anslutning till IMAP servern. %s: %s
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin sv CRAM-MD5 och DIGEST-MD5 kräver att Auth_SASL paketet installerats
|
||||||
|
cyrus imap server emailadmin sv Cyrus IMAP Server
|
||||||
|
cyrus imap server administration emailadmin sv Cyrus IMAP server administration
|
||||||
|
default emailadmin sv Standard
|
||||||
|
deliver extern emailadmin sv Leverera extern
|
||||||
|
displaying html messages is disabled emailadmin sv Cisa HTML meddelanden är inaktiverat
|
||||||
|
do not validate certificate emailadmin sv Validera inte certifikat
|
||||||
|
do you really want to delete this profile emailadmin sv Vill du verkligen radera profilen?
|
||||||
|
domainname emailadmin sv Domän namn
|
||||||
|
edit email settings emailadmin sv Redigera e-post alternativ
|
||||||
|
email account active emailadmin sv Aktivt e-post konto
|
||||||
|
email address emailadmin sv E-post adress
|
||||||
|
enable cyrus imap server administration emailadmin sv Aktivera Cyrus IMAP server administration
|
||||||
|
enable sieve emailadmin sv Aktivera Sieve
|
||||||
|
encrypted connection emailadmin sv Krypterad anslutning
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin sv Standard e-post domän (från: user@domain)
|
||||||
|
entry saved emailadmin sv Post sparad
|
||||||
|
error connecting to imap server. %s : %s. emailadmin sv Kunde inte ansluta till IMAP server %s : %s
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin sv Kunde inte ansluta till IMAP server [%s] %s
|
||||||
|
error saving the entry!!! emailadmin sv Fel uppstod vid sparandet av posten!
|
||||||
|
event details follow emailadmin sv Händelse detaljer följer
|
||||||
|
forward also to emailadmin sv Vidarebefodra även till
|
||||||
|
forward email's to emailadmin sv Vidarebefodra e-post till
|
||||||
|
forward only emailadmin sv Vidarebefodra endast
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin sv Om du vill använda SSL eller TLS måste PHP openssl stödet laddas
|
||||||
|
imap admin password admin sv IMAP admin lösenord
|
||||||
|
imap admin user admin sv IMAP admin användare
|
||||||
|
imap c-client version < 2001 emailadmin sv IMAP C-Client version < 2001
|
||||||
|
imap server emailadmin sv IMAP Server
|
||||||
|
imap server closed the connection. emailadmin sv IMAP server stängde anslutningen
|
||||||
|
imap server closed the connection. server responded: %s emailadmin sv IMAP server stängde anslutningen. Serverna svarade: %s
|
||||||
|
imap server hostname or ip address emailadmin sv IMAP server hostnamn eller IP adress
|
||||||
|
imap server logintyp emailadmin sv IMAP server inloggnings typ
|
||||||
|
imap server port emailadmin sv IMAP server port
|
||||||
|
imap/pop3 server name emailadmin sv IMAP/POP3 server namn
|
||||||
|
in mbyte emailadmin sv i MByte
|
||||||
|
ldap basedn emailadmin sv LDAP basedn
|
||||||
|
ldap server emailadmin sv LDAP server
|
||||||
|
ldap server accounts dn emailadmin sv LDAP server konton DN
|
||||||
|
ldap server admin dn emailadmin sv LDAP server admin DN
|
||||||
|
ldap server admin password emailadmin sv LDAP server admin lösenord
|
||||||
|
ldap server hostname or ip address emailadmin sv LDAP server hostnamn eller IP adress
|
||||||
|
ldap settings emailadmin sv LDAP alternativ
|
||||||
|
leave empty for no quota emailadmin sv Lämna tomt för ingen kvot
|
||||||
|
mail settings admin sv E-post alternativ
|
||||||
|
name of organisation emailadmin sv Organisations namn
|
||||||
|
no alternate email address emailadmin sv Ingen alternerande e-post adress
|
||||||
|
no encryption emailadmin sv Ingen kryptering
|
||||||
|
no forwarding email address emailadmin sv Ingen e-post vidarebefodrings adress
|
||||||
|
no message returned. emailadmin sv Inget svar meddelandes
|
||||||
|
no plain text part found emailadmin sv Hittade inget textfält
|
||||||
|
no supported imap authentication method could be found. emailadmin sv Kunde inte hitta supporterad IMAP autentiserings metod
|
||||||
|
order emailadmin sv Sortering
|
||||||
|
organisation emailadmin sv Organisation
|
||||||
|
pop3 server hostname or ip address emailadmin sv POP3 server hostnamn eller IP adress
|
||||||
|
pop3 server port emailadmin sv POP3 server port
|
||||||
|
port emailadmin sv Port
|
||||||
|
postfix with ldap emailadmin sv Postfix med LDAP
|
||||||
|
profile list emailadmin sv Profil lista
|
||||||
|
profile name emailadmin sv Profil namn
|
||||||
|
qmaildotmode emailadmin sv qmaildotmode
|
||||||
|
quota settings emailadmin sv Kvot alternativ
|
||||||
|
quota size in mbyte emailadmin sv Kvotstorlek i Mb
|
||||||
|
remove emailadmin sv Radera
|
||||||
|
select type of imap/pop3 server emailadmin sv Välj typ av IMAP/POP3 server
|
||||||
|
select type of smtp server emailadmin sv Välj typ av SMTP Server
|
||||||
|
sieve server hostname or ip address emailadmin sv Sieve server hostnamn eller IP adress
|
||||||
|
sieve server port emailadmin sv Sieve server port
|
||||||
|
sieve settings emailadmin sv Sieve alternativ
|
||||||
|
smtp server name emailadmin sv SMTP server namn
|
||||||
|
smtp settings emailadmin sv SMTP alternativ
|
||||||
|
smtp-server hostname or ip address emailadmin sv SMTP server hostnamn eller IP adress
|
||||||
|
smtp-server port emailadmin sv SMTP server port
|
||||||
|
standard emailadmin sv Standard
|
||||||
|
standard imap server emailadmin sv Standard IMAP server
|
||||||
|
standard pop3 server emailadmin sv Standard POP3 server
|
||||||
|
standard smtp-server emailadmin sv Standard SMTP server
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin sv IMAP servern verkar inte stödja den autentiserings metod du valt. Var god och kontakta administratör.
|
||||||
|
the mimeparser can not parse this message. emailadmin sv MIME-tolken kunde inte tolka meddelandet
|
||||||
|
this php has no imap support compiled in!! emailadmin sv Denna installation har inte IMAP stöd kompilerat i PHP.
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin sv För att använda TLS anslutning måste du ha PHP version 5.1.0 eller högre
|
||||||
|
unexpected response from server to authenticate command. emailadmin sv Oväntat svar från servern på AUTENTISERINGS kommandot
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin sv Oväntat svar från servern på Digest-MD5
|
||||||
|
unexpected response from server to login command. emailadmin sv Oväntat svar från servern på INLOGGINGS kommandot
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin sv Okänt IMAP svar från server. Svarade: %s
|
||||||
|
use default emailadmin sv Använd standard
|
||||||
|
use ldap defaults emailadmin sv använd LDAP standarder
|
||||||
|
use smtp auth emailadmin sv Använd SMTP autentisering
|
||||||
|
use tls authentication emailadmin sv Använd TLS autentisering
|
||||||
|
use tls encryption emailadmin sv Använd TLS kryptering
|
||||||
|
users can define their own emailaccounts emailadmin sv Användare kan definiera egna epost konton?
|
||||||
|
virtual mail manager emailadmin sv Virtuell E-post administration
|
||||||
|
@ -385,3 +385,9 @@ you must enter an application name. admin tr Bir uygulama ad
|
|||||||
you must enter an application title. admin tr Bir uygulama baþlýðý girmelisiniz
|
you must enter an application title. admin tr Bir uygulama baþlýðý girmelisiniz
|
||||||
you must select a file type admin tr Bir dosya tipi seçmelisiniz
|
you must select a file type admin tr Bir dosya tipi seçmelisiniz
|
||||||
you will need to remove the subcategories before you can delete this category admin tr Bir kategoriyi silmeden önce o kategoriye ait tüm alt kategorileri kaldýrmalýsýnýz !
|
you will need to remove the subcategories before you can delete this category admin tr Bir kategoriyi silmeden önce o kategoriye ait tüm alt kategorileri kaldýrmalýsýnýz !
|
||||||
|
default emailadmin tr Varsayılan
|
||||||
|
event details follow emailadmin tr Etkinlik Detayları Ektedir
|
||||||
|
mail settings admin tr Mail ayarları
|
||||||
|
order emailadmin tr Sıralama
|
||||||
|
remove emailadmin tr Kaldır
|
||||||
|
standard emailadmin tr standart
|
||||||
|
@ -371,3 +371,9 @@ you must enter an application title. admin uk Необхідно ввести н
|
|||||||
you must select a file type admin uk Необхідно визначити тип файлу
|
you must select a file type admin uk Необхідно визначити тип файлу
|
||||||
you will need to remove the subcategories before you can delete this category admin uk Необхідно видалити підкатегорії перед тим, як Ви зможете видалити цю категорію !
|
you will need to remove the subcategories before you can delete this category admin uk Необхідно видалити підкатегорії перед тим, як Ви зможете видалити цю категорію !
|
||||||
your session could not be verified. admin uk Неможливо перевірити Ваш вхід
|
your session could not be verified. admin uk Неможливо перевірити Ваш вхід
|
||||||
|
default emailadmin uk По замовченню
|
||||||
|
event details follow emailadmin uk Подробиці події
|
||||||
|
order emailadmin uk Послідовність
|
||||||
|
remove emailadmin uk Видалити
|
||||||
|
standard emailadmin uk стандарт
|
||||||
|
use default emailadmin uk По замовченню
|
||||||
|
@ -11,3 +11,5 @@ order admin vi Thứ tự
|
|||||||
permission denied admin vi Không có quyền
|
permission denied admin vi Không có quyền
|
||||||
translation admin vi Dịch
|
translation admin vi Dịch
|
||||||
updated admin vi Đã cập nhật
|
updated admin vi Đã cập nhật
|
||||||
|
event details follow emailadmin vi Theo dõi Chi tiết Sự kiện
|
||||||
|
order emailadmin vi Thứ tự
|
||||||
|
@ -476,3 +476,136 @@ you must select a file type admin zh-tw 您必須選擇一種檔案型態。
|
|||||||
you must select at least one group member. admin zh-tw 您必須選擇至少一個群組成員。
|
you must select at least one group member. admin zh-tw 您必須選擇至少一個群組成員。
|
||||||
you will need to remove the subcategories before you can delete this category admin zh-tw 您必須在刪除這個類別前刪除所有的子類別!
|
you will need to remove the subcategories before you can delete this category admin zh-tw 您必須在刪除這個類別前刪除所有的子類別!
|
||||||
your session could not be verified. admin zh-tw 您的連線不合法。
|
your session could not be verified. admin zh-tw 您的連線不合法。
|
||||||
|
(no subject) emailadmin zh-tw (沒有標題)
|
||||||
|
account '%1' not found !!! emailadmin zh-tw 找不到帳號 '%1'!
|
||||||
|
add new email address: emailadmin zh-tw 新增信箱:
|
||||||
|
add profile emailadmin zh-tw 新增資料
|
||||||
|
admin dn emailadmin zh-tw 管理 dn
|
||||||
|
admin password emailadmin zh-tw 管理密碼
|
||||||
|
admin username emailadmin zh-tw 管理帳號
|
||||||
|
advanced options emailadmin zh-tw 進階選項
|
||||||
|
alternate email address emailadmin zh-tw 替代郵件位址
|
||||||
|
any application emailadmin zh-tw 任何模組
|
||||||
|
any group emailadmin zh-tw 任何群組
|
||||||
|
bad login name or password. emailadmin zh-tw 帳號或密碼有誤。
|
||||||
|
bad or malformed request. server responded: %s emailadmin zh-tw 錯誤的請求,伺服器回應: %s
|
||||||
|
bad request: %s emailadmin zh-tw 錯誤的請求: %s
|
||||||
|
can be used by application emailadmin zh-tw 可以取用資料的模組
|
||||||
|
can be used by group emailadmin zh-tw 可以取用資料的群組
|
||||||
|
connection dropped by imap server. emailadmin zh-tw 連線被 IMAP 伺服器中斷了
|
||||||
|
continue emailadmin zh-tw 繼續
|
||||||
|
could not complete request. reason given: %s emailadmin zh-tw 無法完成請求,理由: %s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin zh-tw 無法開啟安全連線到 IMAP 伺服器。%s : %s.
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin zh-tw CRAM-MD5 或 DIGEST-MD5 需要先安裝 Auth_SASL 才能使用。
|
||||||
|
cyrus imap server emailadmin zh-tw Cyrus IMAP伺服器
|
||||||
|
cyrus imap server administration emailadmin zh-tw Cyrus IMAP伺服器管理
|
||||||
|
default emailadmin zh-tw 預設
|
||||||
|
deliver extern emailadmin zh-tw 傳送到外部
|
||||||
|
displaying html messages is disabled emailadmin zh-tw 顯示 html 信件的功能停用中
|
||||||
|
do not validate certificate emailadmin zh-tw 沒有可用的執照
|
||||||
|
do you really want to delete this profile emailadmin zh-tw 您確定要刪除這個資料
|
||||||
|
domainname emailadmin zh-tw 網域名稱
|
||||||
|
edit email settings emailadmin zh-tw 編輯郵件設定
|
||||||
|
email account active emailadmin zh-tw 郵件帳號啟用
|
||||||
|
email address emailadmin zh-tw 郵件位址
|
||||||
|
email settings common zh-tw 郵件設定
|
||||||
|
emailadmin emailadmin zh-tw 郵件管理
|
||||||
|
enable cyrus imap server administration emailadmin zh-tw 啟用Cyrus IMAP伺服器管理
|
||||||
|
enable sieve emailadmin zh-tw 啟用Sieve
|
||||||
|
encrypted connection emailadmin zh-tw 加密連線
|
||||||
|
encryption settings emailadmin zh-tw 加密設定
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin zh-tw 輸入您的預設郵件網域(小老鼠後面所有字:帳號@網域)
|
||||||
|
entry saved emailadmin zh-tw 資料儲存了
|
||||||
|
error connecting to imap server. %s : %s. emailadmin zh-tw 連線到 IMAP 伺服器時發生錯誤。 %s : %s
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin zh-tw 連線到 IMAP 伺服器時發生錯誤。 [%s] %s
|
||||||
|
error saving the entry!!! emailadmin zh-tw 儲存資料時發生錯誤!
|
||||||
|
event details follow emailadmin zh-tw 事件細節
|
||||||
|
forward also to emailadmin zh-tw 同時轉寄到
|
||||||
|
forward email's to emailadmin zh-tw 轉寄信件到
|
||||||
|
forward only emailadmin zh-tw 轉寄
|
||||||
|
global options emailadmin zh-tw 全域選項
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin zh-tw 如果使用 SSL 或 TLS,您必須先載入 PHP openssl 外掛。
|
||||||
|
imap admin password admin zh-tw IMAP管理者密碼
|
||||||
|
imap admin user admin zh-tw IMAP管理者帳號
|
||||||
|
imap c-client version < 2001 emailadmin zh-tw IMAP C-終端的版本小於2001
|
||||||
|
imap server emailadmin zh-tw IMAP伺服器
|
||||||
|
imap server closed the connection. emailadmin zh-tw IMAP伺服器關閉連線
|
||||||
|
imap server closed the connection. server responded: %s emailadmin zh-tw IMAP伺服器關閉連線,伺服器回應: %s
|
||||||
|
imap server hostname or ip address emailadmin zh-tw IMAP伺服器的主機名稱或是IP位址
|
||||||
|
imap server logintyp emailadmin zh-tw IMAP伺服器登入類型
|
||||||
|
imap server name emailadmin zh-tw IMAP伺服器名稱
|
||||||
|
imap server port emailadmin zh-tw IMAP伺服器連接埠
|
||||||
|
imap/pop3 server name emailadmin zh-tw IMAP/POP3伺服器名稱
|
||||||
|
in mbyte emailadmin zh-tw 以MB顯示
|
||||||
|
ldap basedn emailadmin zh-tw LDAP basedn
|
||||||
|
ldap server emailadmin zh-tw LDAP 伺服器
|
||||||
|
ldap server accounts dn emailadmin zh-tw LDAP 伺服器帳號 DN
|
||||||
|
ldap server admin dn emailadmin zh-tw LDAP 伺服器管理者 DN
|
||||||
|
ldap server admin password emailadmin zh-tw LDAP 伺服器管理者密碼
|
||||||
|
ldap server hostname or ip address emailadmin zh-tw LDAP 伺服器主機名稱或是IP位址
|
||||||
|
ldap settings emailadmin zh-tw LDAP 設定
|
||||||
|
leave empty for no quota emailadmin zh-tw 不填入任何資料表示無限制
|
||||||
|
mail settings admin zh-tw 郵件設定
|
||||||
|
name of organisation emailadmin zh-tw 組織名稱
|
||||||
|
no alternate email address emailadmin zh-tw 沒有可替換的郵件位址
|
||||||
|
no encryption emailadmin zh-tw 沒有加密
|
||||||
|
no forwarding email address emailadmin zh-tw 沒有轉寄郵件位址
|
||||||
|
no message returned. emailadmin zh-tw 沒有訊息回應。
|
||||||
|
no plain text part found emailadmin zh-tw 找不到純文字部份
|
||||||
|
no supported imap authentication method could be found. emailadmin zh-tw 找不到可以支援的 IMAP 認證方式。
|
||||||
|
order emailadmin zh-tw 順序
|
||||||
|
organisation emailadmin zh-tw 組織
|
||||||
|
plesk can't rename users --> request ignored emailadmin zh-tw Plesk 無法修改使用者名稱 --> 忽略
|
||||||
|
plesk imap server (courier) emailadmin zh-tw Plesk IMAP 伺服器(Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin zh-tw 找不到 Plesk 郵件指令 '%1' !
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin zh-tw Plesk 要求密碼至少必須有 5 個字元而且不能包含帳號名稱 --> 密碼沒有設定!
|
||||||
|
plesk smtp-server (qmail) emailadmin zh-tw Plesk SMTP伺服器 (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin zh-tw POP3伺服器主機名稱或是IP位址
|
||||||
|
pop3 server port emailadmin zh-tw POP3伺服器連接埠
|
||||||
|
port emailadmin zh-tw 連接埠
|
||||||
|
postfix with ldap emailadmin zh-tw 使用LDAP與 Postfix
|
||||||
|
profile access rights emailadmin zh-tw 存取資料權限
|
||||||
|
profile list emailadmin zh-tw 資料清單
|
||||||
|
profile name emailadmin zh-tw 資料名稱
|
||||||
|
qmaildotmode emailadmin zh-tw qmaildotmode
|
||||||
|
quota settings emailadmin zh-tw 配額設定
|
||||||
|
quota size in mbyte emailadmin zh-tw 配額大小(MB)
|
||||||
|
remove emailadmin zh-tw 移除
|
||||||
|
select type of imap server emailadmin zh-tw 選擇IMAP伺服器類型
|
||||||
|
select type of imap/pop3 server emailadmin zh-tw 選擇IMAP/POP3伺服器的格式
|
||||||
|
select type of smtp server emailadmin zh-tw 選擇SMTP伺服器的格式
|
||||||
|
server settings emailadmin zh-tw 伺服器設定
|
||||||
|
sieve server hostname or ip address emailadmin zh-tw Sieve伺服器主機名稱或是IP位址
|
||||||
|
sieve server port emailadmin zh-tw Sieve伺服器連接埠
|
||||||
|
sieve settings emailadmin zh-tw Sieve設定
|
||||||
|
smtp authentication emailadmin zh-tw SMTP 認證
|
||||||
|
smtp options emailadmin zh-tw SMTP 選項
|
||||||
|
smtp server name emailadmin zh-tw SMTP伺服器名稱
|
||||||
|
smtp settings emailadmin zh-tw SMTP 設定
|
||||||
|
smtp-server hostname or ip address emailadmin zh-tw SMTP伺服器主機名稱或是IP位址
|
||||||
|
smtp-server port emailadmin zh-tw SMTP伺服器連接埠
|
||||||
|
standard emailadmin zh-tw 標準
|
||||||
|
standard imap server emailadmin zh-tw 標準IMAP伺服器
|
||||||
|
standard pop3 server emailadmin zh-tw 標準POP3伺服器
|
||||||
|
standard smtp-server emailadmin zh-tw 標準SMTP伺服器
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin zh-tw IMAP 伺服器不支援指定的認證方式,請聯絡您的系統管理員。
|
||||||
|
the mimeparser can not parse this message. emailadmin zh-tw mime 解析程式無法處理這封郵件
|
||||||
|
this php has no imap support compiled in!! emailadmin zh-tw 您的PHP並未編譯為支援IMAP的狀態
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin zh-tw 要使用 TLS 連線,您必須執行在 PHP 5.1.0 或是更新版本。
|
||||||
|
unexpected response from server to authenticate command. emailadmin zh-tw AUTHENTICATE 指令讓伺服器傳回不如預期的回應。
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin zh-tw 伺服器傳回不如預期的 Digest-MD5 回應。
|
||||||
|
unexpected response from server to login command. emailadmin zh-tw 伺服器傳回不如預期的 LOGIN 指令。
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin zh-tw 不知名的 IMAP 伺服器回應,回應內容: %s
|
||||||
|
unsupported action '%1' !!! emailadmin zh-tw 不支援 '%1' 這個操作!
|
||||||
|
update current email address: emailadmin zh-tw 更新目前信箱:
|
||||||
|
use default emailadmin zh-tw 預設值
|
||||||
|
use ldap defaults emailadmin zh-tw 使用LDAP預設值
|
||||||
|
use smtp auth emailadmin zh-tw 使用SMTP認證
|
||||||
|
use tls authentication emailadmin zh-tw 使用TLS認證
|
||||||
|
use tls encryption emailadmin zh-tw 使用TLS加密
|
||||||
|
user can edit forwarding address emailadmin zh-tw 使用者可以編輯自動轉寄信箱
|
||||||
|
username (standard) emailadmin zh-tw 帳號(標準)
|
||||||
|
username@domainname (virtual mail manager) emailadmin zh-tw 帳號@網域(虛擬郵件管理)
|
||||||
|
users can define their own emailaccounts emailadmin zh-tw 使用者可以自行定義郵件帳號
|
||||||
|
virtual mail manager emailadmin zh-tw 虛擬郵件管理者
|
||||||
|
your name emailadmin zh-tw 您的名稱
|
||||||
|
@ -526,3 +526,138 @@ you must select at least one group member. admin zh 您必须至少选择一个
|
|||||||
you need to enter install id and password! admin zh 您需要输入安装 ID 和密码!
|
you need to enter install id and password! admin zh 您需要输入安装 ID 和密码!
|
||||||
you will need to remove the subcategories before you can delete this category admin zh 在删除该类别前,必须删除它的所有子类别!
|
you will need to remove the subcategories before you can delete this category admin zh 在删除该类别前,必须删除它的所有子类别!
|
||||||
your session could not be verified. admin zh 本次会话无法校验。
|
your session could not be verified. admin zh 本次会话无法校验。
|
||||||
|
(no subject) emailadmin zh (无主题)
|
||||||
|
account '%1' not found !!! emailadmin zh 帐户 '%1' 未发现!
|
||||||
|
add new email address: emailadmin zh 添加新邮箱地址:
|
||||||
|
add profile emailadmin zh 添加 profile
|
||||||
|
admin dn emailadmin zh 管理 DN
|
||||||
|
admin password emailadmin zh 管理密码
|
||||||
|
admin username emailadmin zh 管理帐户
|
||||||
|
advanced options emailadmin zh 高级选项
|
||||||
|
alternate email address emailadmin zh 候选邮箱地址
|
||||||
|
any application emailadmin zh 任何用用程序
|
||||||
|
any group emailadmin zh 任何组
|
||||||
|
bad login name or password. emailadmin zh 错误登录名和密码。
|
||||||
|
bad or malformed request. server responded: %s emailadmin zh 不正确的请求。服务器或应:%s
|
||||||
|
bad request: %s emailadmin zh 错误请求:%s
|
||||||
|
can be used by application emailadmin zh 可用于应用程序
|
||||||
|
can be used by group emailadmin zh 可用于群组
|
||||||
|
connection dropped by imap server. emailadmin zh 连接被 IMAP 服务器中断。
|
||||||
|
continue emailadmin zh 继续
|
||||||
|
could not complete request. reason given: %s emailadmin zh 无法完成请求。原因是:%s
|
||||||
|
could not open secure connection to the imap server. %s : %s. emailadmin zh 无法打开到 IMAP 服务器的安全连接。%s:%s。
|
||||||
|
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin zh CRAM-MD5 或 DIGEST-MD5 需要安装 auth_sasl 包。
|
||||||
|
cyrus imap server emailadmin zh Cyrus IMAP 服务器
|
||||||
|
cyrus imap server administration emailadmin zh Cyrus IMAP 服务器管理
|
||||||
|
default emailadmin zh 默认
|
||||||
|
deliver extern emailadmin zh 传送外部
|
||||||
|
displaying html messages is disabled emailadmin zh 显示HTML邮件被禁用
|
||||||
|
do not validate certificate emailadmin zh 不确认证书
|
||||||
|
do you really want to delete this profile emailadmin zh 您确定要删除这个 profile 文件
|
||||||
|
domainname emailadmin zh 域名
|
||||||
|
edit email settings emailadmin zh 编辑邮箱设置
|
||||||
|
email account active emailadmin zh 邮箱帐户激活
|
||||||
|
email address emailadmin zh 邮箱地址
|
||||||
|
email settings common zh 邮箱设置
|
||||||
|
emailadmin emailadmin zh 邮箱管理
|
||||||
|
enable cyrus imap server administration emailadmin zh 启用 Cyrus IMAP 服务器管理
|
||||||
|
enable sieve emailadmin zh 启用过滤
|
||||||
|
encrypted connection emailadmin zh 加密连接
|
||||||
|
encryption settings emailadmin zh 加密设置
|
||||||
|
enter your default mail domain (from: user@domain) emailadmin zh 输入您的默认邮箱域 (比如:user@domain,取@之后的所有词或字母)
|
||||||
|
entry saved emailadmin zh 条目已储存
|
||||||
|
error connecting to imap server. %s : %s. emailadmin zh 连接到 IMAP 服务器错误。%s : %s。
|
||||||
|
error connecting to imap server: [%s] %s. emailadmin zh 连接到 IMAP 服务器错误:[%s] %s。
|
||||||
|
error saving account! emailadmin zh 保存帐户错误!
|
||||||
|
error saving the entry!!! emailadmin zh 保存条目时发生错误!
|
||||||
|
event details follow emailadmin zh 事件细节
|
||||||
|
forward also to emailadmin zh 同时转发到
|
||||||
|
forward email's to emailadmin zh 转发邮件到
|
||||||
|
forward only emailadmin zh 转发
|
||||||
|
global options emailadmin zh 全局选项
|
||||||
|
if using ssl or tls, you must have the php openssl extension loaded. emailadmin zh 如果使用 SSL 或 TLS,您必须加载 PHP openssl 扩展。
|
||||||
|
imap admin password admin zh IMAP 管理者密码
|
||||||
|
imap admin user admin zh IMAP 管理者帐户
|
||||||
|
imap c-client version < 2001 emailadmin zh IMAP C-Clien 版本小 < 2001
|
||||||
|
imap server emailadmin zh IMAP 服务器
|
||||||
|
imap server closed the connection. emailadmin zh IMAP 服务器关闭连接。
|
||||||
|
imap server closed the connection. server responded: %s emailadmin zh IMAP 服务器关闭连接。服务器回应:%s
|
||||||
|
imap server hostname or ip address emailadmin zh IMAP 服务器的主机名或 IP 地址
|
||||||
|
imap server logintyp emailadmin zh IMAP 服务器登录类型
|
||||||
|
imap server name emailadmin zh IMAP 服务器名
|
||||||
|
imap server port emailadmin zh IMAP 服务器端口号
|
||||||
|
imap/pop3 server name emailadmin zh IMAP / POP3 服务器名
|
||||||
|
in mbyte emailadmin zh 以 MB 表示
|
||||||
|
ldap basedn emailadmin zh LDAP basedn
|
||||||
|
ldap server emailadmin zh LDAP 服务器
|
||||||
|
ldap server accounts dn emailadmin zh LDAP 服务器帐户 DN
|
||||||
|
ldap server admin dn emailadmin zh LDAP 服务器管理员 DN
|
||||||
|
ldap server admin password emailadmin zh LDAP 服务器管管理员密码
|
||||||
|
ldap server hostname or ip address emailadmin zh LDAP 服务器主机名或 IP 地址
|
||||||
|
ldap settings emailadmin zh LDAP 设置
|
||||||
|
leave empty for no quota emailadmin zh 留空表示无限额
|
||||||
|
mail settings admin zh 邮箱设置
|
||||||
|
name of organisation emailadmin zh 组织名称
|
||||||
|
no alternate email address emailadmin zh 无备用邮箱地址
|
||||||
|
no encryption emailadmin zh 未加密
|
||||||
|
no forwarding email address emailadmin zh 没有转发邮件地址
|
||||||
|
no message returned. emailadmin zh 无返回消息。
|
||||||
|
no plain text part found emailadmin zh 未找到纯文本部分
|
||||||
|
no supported imap authentication method could be found. emailadmin zh 无支持 IMAP 认证的方法可以找到。
|
||||||
|
order emailadmin zh 排序
|
||||||
|
organisation emailadmin zh 组织
|
||||||
|
plesk can't rename users --> request ignored emailadmin zh Plesk 不能重命名用户 --> 请求忽略
|
||||||
|
plesk imap server (courier) emailadmin zh Plesk IMAP 服务器 (Courier)
|
||||||
|
plesk mail script '%1' not found !!! emailadmin zh Plesk 邮件脚本 '%1' 未找到!
|
||||||
|
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin zh Plesk 需要至少5个字符密码并且不包含帐户名 --> 密码未设置!
|
||||||
|
plesk smtp-server (qmail) emailadmin zh Plesk SMTP-Server (Qmail)
|
||||||
|
pop3 server hostname or ip address emailadmin zh POP3 服务器主机名或 IP 地址
|
||||||
|
pop3 server port emailadmin zh POP3 服务器端口号
|
||||||
|
port emailadmin zh 端口
|
||||||
|
postfix with ldap emailadmin zh LDAP 用于 Postfix
|
||||||
|
profile access rights emailadmin zh profile 访问权限
|
||||||
|
profile list emailadmin zh profile 列表
|
||||||
|
profile name emailadmin zh profile 名
|
||||||
|
qmaildotmode emailadmin zh qmaildotmode
|
||||||
|
quota settings emailadmin zh 配额设置
|
||||||
|
quota size in mbyte emailadmin zh 配额大小(MB)
|
||||||
|
remove emailadmin zh 移除
|
||||||
|
select type of imap server emailadmin zh 选择 IMAP 服务器类型
|
||||||
|
select type of imap/pop3 server emailadmin zh 选择 IMAP / POP3 服务器类型
|
||||||
|
select type of smtp server emailadmin zh 选择 SMAP 服务器类型
|
||||||
|
server settings emailadmin zh 服务器设置
|
||||||
|
sieve server hostname or ip address emailadmin zh Sieve 服务器主机名或 IP 地址
|
||||||
|
sieve server port emailadmin zh Sieve 服务器端口号
|
||||||
|
sieve settings emailadmin zh Sieve 设置
|
||||||
|
smtp authentication emailadmin zh SMTP 认证
|
||||||
|
smtp options emailadmin zh SMTP 选项
|
||||||
|
smtp server name emailadmin zh SMTP 服务器名
|
||||||
|
smtp settings emailadmin zh SMTP 设置
|
||||||
|
smtp-server hostname or ip address emailadmin zh SMTP 服务器主机名或 IP 地址
|
||||||
|
smtp-server port emailadmin zh SMTP 服务器端口号
|
||||||
|
standard emailadmin zh 标准
|
||||||
|
standard imap server emailadmin zh 标准 IMAP 服务器
|
||||||
|
standard pop3 server emailadmin zh 标准 POP3 服务器
|
||||||
|
standard smtp-server emailadmin zh 标准 SMTP 服务器
|
||||||
|
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin zh IMAP 服务器似乎不支持所选择的认证方法。请联系系统管理员。
|
||||||
|
the mimeparser can not parse this message. emailadmin zh mime 解析器不能解析这个邮件。
|
||||||
|
this php has no imap support compiled in!! emailadmin zh PHP 没有 IMAP 支持的编译!
|
||||||
|
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin zh 未使用一个 TLS 连接,您必须运行 PHP 5.1.0 或更高版本。
|
||||||
|
unexpected response from server to authenticate command. emailadmin zh 服务器为 AUTHENTICATE 指令返回不当以外回应。
|
||||||
|
unexpected response from server to digest-md5 response. emailadmin zh 服务器为 Digest-MD5 返回意外的不当的回应。
|
||||||
|
unexpected response from server to login command. emailadmin zh 服务器为 LOGIN 指令返回意外的不当回应。
|
||||||
|
unknown imap response from the server. server responded: %s emailadmin zh INAP 服务器返回未知回应。服务器回应:%s
|
||||||
|
unsupported action '%1' !!! emailadmin zh 不支持 '%1' 的操作!
|
||||||
|
update current email address: emailadmin zh 更新当前邮件地址:
|
||||||
|
use default emailadmin zh 使用默认值
|
||||||
|
use ldap defaults emailadmin zh 使用 LDAP 默认值
|
||||||
|
use smtp auth emailadmin zh 使用 SMTP 认证
|
||||||
|
use tls authentication emailadmin zh 使用TLS 认证
|
||||||
|
use tls encryption emailadmin zh 使用TLS 加密
|
||||||
|
user can edit forwarding address emailadmin zh 用户可以编辑转发地址
|
||||||
|
username (standard) emailadmin zh 用户名(标准)
|
||||||
|
username@domainname (virtual mail manager) emailadmin zh 用户名@域 (虚拟邮箱管理)
|
||||||
|
users can define their own emailaccounts emailadmin zh 用户可以自定义邮箱账户
|
||||||
|
users can define their own signatures emailadmin zh 用户可以定义他们自己的签名
|
||||||
|
virtual mail manager emailadmin zh 虚拟邮箱管理
|
||||||
|
your name emailadmin zh 您的名字
|
||||||
|
@ -99,3 +99,57 @@ td.admin_userAgent span {
|
|||||||
#admin-acl_filter {
|
#admin-acl_filter {
|
||||||
max-width: 100% !important;
|
max-width: 100% !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mail account wizard and edit
|
||||||
|
*/
|
||||||
|
.emailadmin_manual {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.emailadmin_progress {
|
||||||
|
display: none;
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
.emailadmin_ssl {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.emailadmin_port {
|
||||||
|
width: 5em;
|
||||||
|
}
|
||||||
|
.emailadmin_header {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_tabs {
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_acc_imap_logintype {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
span.emailadmin_diagnostic,.emailadmin_diagnostic {
|
||||||
|
color: lightgray;
|
||||||
|
}
|
||||||
|
span#admin-mailaccount_acc_id {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_acc_smtp_account_id {
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_button\[multiple\] {
|
||||||
|
height: auto;
|
||||||
|
padding-left: 5px;
|
||||||
|
margin:2px;
|
||||||
|
width: 16px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_button\[placeholders\] {
|
||||||
|
height: 16px;
|
||||||
|
padding-left: 5px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_mailLocalAddress {
|
||||||
|
width: 98%;
|
||||||
|
}
|
||||||
|
select#admin-mailaccount_ident_id {
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
BIN
admin/templates/default/images/progress.gif
Normal file
BIN
admin/templates/default/images/progress.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
344
admin/templates/default/mailaccount.xet
Normal file
344
admin/templates/default/mailaccount.xet
Normal file
@ -0,0 +1,344 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailaccount.identity" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="113"/>
|
||||||
|
<column width="300"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="ident_id" value="Identity"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="ident_id" no_lang="1" onchange="1"/>
|
||||||
|
</menulist>
|
||||||
|
<checkbox label="allow users to create further identities" id="acc_further_identities" class="emailadmin_no_user"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="ident_name" value="Name"/>
|
||||||
|
<textbox id="ident_name" size="80" maxlength="128" span="all" blur="default your name and email"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="ident_realname" value="Your name"/>
|
||||||
|
<hbox span="all">
|
||||||
|
<textbox id="ident_realname" size="80" maxlength="128"/>
|
||||||
|
<buttononly label="Placeholders" id="button[placeholders]" onclick="window.open(egw::link('/index.php','menuaction=addressbook.addressbook_merge.show_replacements&nonavbar=1'),'_blank','dependent=yes,width=860,height=620,scrollbars=yes,status=yes'); return false;" options="dialog_help"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="ident_org" value="Organisation"/>
|
||||||
|
<textbox id="ident_org" size="80" maxlength="128" span="all"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="ident_email" value="EMail address"/>
|
||||||
|
<url-email id="ident_email" options="80,128" span="all"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<htmlarea expand_toolbar="false" height="125px" id="ident_signature" span="all" width="100%"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.imap" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="115"/>
|
||||||
|
<column width="200"/>
|
||||||
|
<column width="60"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="emailadmin_no_single">
|
||||||
|
<description for="acc_imap_logintype" value="Type"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_imap_type"/>
|
||||||
|
</menulist>
|
||||||
|
<description for="acc_imap_logintype" value="Login" class="emailadmin_no_single"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup class="emailadmin_no_single" statustext="How username get constructed" id="acc_imap_logintype"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_imap_username" value="Username"/>
|
||||||
|
<textbox id="acc_imap_username" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
<description for="acc_domain" value="Domain" class="emailadmin_no_single"/>
|
||||||
|
<textbox id="acc_domain" size="32" maxlength="128" class="emailadmin_no_single"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_imap_password" value="Password"/>
|
||||||
|
<passwd id="acc_imap_password" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
<description id="acc_imap_account_id" class="emailadmin_diagnostic"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_imap_host" value="IMAP server"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_imap_host" size="32" maxlength="128" span="all"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_imap_ssl" value="Secure connection"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup class="emailadmin_ssl" id="acc_imap_ssl" needed="1" onchange="app.admin.wizard_imap_ssl_onchange"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_imap_port" needed="1" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
<description/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row class="emailadmin_no_single">
|
||||||
|
<groupbox span="all" class="emailadmin_imap_admin">
|
||||||
|
<caption label="IMAP administration"/>
|
||||||
|
<grid>
|
||||||
|
<columns>
|
||||||
|
<column width="100"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="acc_imap_admin_username" value="Admin user"/>
|
||||||
|
<textbox id="acc_imap_admin_username" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_imap_admin_password" value="Password"/>
|
||||||
|
<passwd id="acc_imap_admin_password" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</groupbox>
|
||||||
|
<description/>
|
||||||
|
<description/>
|
||||||
|
<description/>
|
||||||
|
<description/>
|
||||||
|
<description/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.folder" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="115"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_sent" value="Sent folder"/>
|
||||||
|
<taglist id="acc_folder_sent" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_trash" value="Trash folder"/>
|
||||||
|
<taglist id="acc_folder_trash" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_draft" value="Drafts folder"/>
|
||||||
|
<taglist id="acc_folder_draft" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_template" value="Templates folder"/>
|
||||||
|
<taglist id="acc_folder_template" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_junk" value="Junk folder"/>
|
||||||
|
<taglist id="acc_folder_junk" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_junk" value="Notify about new mail in this folders"/>
|
||||||
|
<vbox>
|
||||||
|
<taglist id="notify_folders" empty_label="Select one ..." autocomplete_url="" onchange="app.admin.change_folders"/>
|
||||||
|
<checkbox id="notify_save_default" label="save as default"/>
|
||||||
|
<checkbox id="notify_use_default" label="use default"/>
|
||||||
|
</vbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.sieve" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="acc_sieve_enabled" value="Enable Sieve"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-bool" id="acc_sieve_enabled" needed="1"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_sieve_host" value="Sieve server"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_sieve_host" onchange="app.admin.wizard_sieve_onchange" size="32" maxlength="128"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_sieve_ssl" value="Secure connection"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup class="emailadmin_ssl" id="acc_sieve_ssl" onchange="app.admin.wizard_sieve_ssl_onchange"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_sieve_port" onchange="app.admin.wizard_sieve_onchange" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row height="150">
|
||||||
|
<description value="Vacation messages with start and end date require an admin account to be set!" span="all" class="emailadmin_no_single"/>
|
||||||
|
<description/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.smtp" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="115"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="emailadmin_no_single">
|
||||||
|
<description for="acc_smtp_type" value="Type"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_smtp_type" onchange="1"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="emailadmin_no_single">
|
||||||
|
<description for="acc_smtp_auth_session" value="Authentication"/>
|
||||||
|
<checkbox label="Use username+password from current user" id="acc_smtp_auth_session"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_smtp_username" value="Username"/>
|
||||||
|
<textbox blur="if authentication required" id="acc_smtp_username" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_smtp_password" value="Password"/>
|
||||||
|
<hbox>
|
||||||
|
<passwd id="acc_smtp_password" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
<description id="acc_smtp_account_id" class="emailadmin_diagnostic"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_smtp_host" value="SMTP server"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_smtp_host" needed="1" size="32" maxlength="128"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_smtp_ssl" value="Secure connection"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup class="emailadmin_ssl" id="acc_smtp_ssl" needed="1" onchange="app.admin.wizard_smtp_ssl_onchange"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_smtp_port" needed="1" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row height="50">
|
||||||
|
<description/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.aliases" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="113"/>
|
||||||
|
<column width="400"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="mailLocalAddress" value="EMail address"/>
|
||||||
|
<url-email id="mailLocalAddress" options="32,128"/>
|
||||||
|
<checkbox label="Email account active" id="accountStatus" selected_value="active"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="mailAlternateAddress" value="Alternate email address"/>
|
||||||
|
<taglist id="mailAlternateAddress" autocomplete_url=""/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row disabled="@no_forward_available">
|
||||||
|
<description for="mailForwardingAddress" value="Forward email's to"/>
|
||||||
|
<taglist id="mailForwardingAddress" autocomplete_url=""/>
|
||||||
|
<vbox>
|
||||||
|
<checkbox label="Forward only" id="deliveryMode" selected_value="forwardOnly" onchange="if (widget.getValue()) et2_dialog.alert('Forward only disables IMAP mailbox / storing of mails and just forwards them to given address.','Forward only');"/>
|
||||||
|
<checkbox label="Allow users to change forwards" id="acc_user_forward"/>
|
||||||
|
</vbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="quotaLimit" value="Quota (MB)"/>
|
||||||
|
<hbox>
|
||||||
|
<textbox type="integer" id="quotaLimit"/>
|
||||||
|
<description value="Leave empty for no quota"/>
|
||||||
|
</hbox>
|
||||||
|
<textbox type="integer" label="Currently:" id="quotaUsed" readonly="true"/>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@admin_actions">
|
||||||
|
<description value="Administration"/>
|
||||||
|
<toolbar id="admin_actions" colspan="2" default_execute="app.admin.account_edit_action"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="500"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="!@accounts" class="dialogHeader">
|
||||||
|
<description for="acc_id" value="Mail account"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_id" onchange="app.admin.change_account" class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row class="dialogHeader">
|
||||||
|
<description for="acc_name" value="Name of account"/>
|
||||||
|
<textbox id="acc_name" needed="1" size="80" class="et2_fullWidth"/>
|
||||||
|
<description align="right" value="$cont[acc_id]" class="emailadmin_diagnostic"/>
|
||||||
|
</row>
|
||||||
|
<row class="emailadmin_no_user dialogHeader2">
|
||||||
|
<description for="account_id" value="Valid for"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-account" id="account_id" onchange="app.admin.account_hide_not_applying" options="Everyone,both"/>
|
||||||
|
</menulist>
|
||||||
|
<buttononly label="Select multiple" id="button[multiple]" onclick="app.admin.edit_multiple" options="users"/>
|
||||||
|
<checkbox label="account editable by user" id="acc_user_editable"/>
|
||||||
|
</hbox>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<tabbox id="tabs" span="all" tab_height="320">
|
||||||
|
<tabs>
|
||||||
|
<tab id="admin.mailaccount.identity" label="Identity+Signature" statustext="Identity&Signature"/>
|
||||||
|
<tab id="admin.mailaccount.imap" label="IMAP" statustext="incoming mail"/>
|
||||||
|
<tab id="admin.mailaccount.folder" label="Folder" statustext="Folder"/>
|
||||||
|
<tab id="admin.mailaccount.sieve" label="Sieve" statustext="serverside filtering"/>
|
||||||
|
<tab id="admin.mailaccount.smtp" label="SMTP" statustext="outgoing mail"/>
|
||||||
|
<tab id="admin.mailaccount.aliases" label="Aliases+Forwards" statustext="Aliases, Forwarding, Quota, ..."/>
|
||||||
|
</tabs>
|
||||||
|
<tabpanels>
|
||||||
|
<template id="admin.mailaccount.identity"/>
|
||||||
|
<template id="admin.mailaccount.imap"/>
|
||||||
|
<template id="admin.mailaccount.folder"/>
|
||||||
|
<template id="admin.mailaccount.sieve"/>
|
||||||
|
<template id="admin.mailaccount.smtp"/>
|
||||||
|
<template id="admin.mailaccount.aliases"/>
|
||||||
|
</tabpanels>
|
||||||
|
</tabbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
<hbox class="dialogFooterToolbar">
|
||||||
|
<button label="Save" id="button[save]"/>
|
||||||
|
<button label="Apply" id="button[apply]" />
|
||||||
|
<button statustext="Use wizard to detect or verify configuration" label="Wizard" id="button[wizard]" image="magicwand" background_image="1"/>
|
||||||
|
<button label="Cancel" id="button[cancel]" onclick="window.close();"/>
|
||||||
|
<button align="right" label="Delete" id="button[delete]" onclick="et2_dialog.confirm(widget,'Delete this account','Delete')"/>
|
||||||
|
<button align="right" label="Delete identity" id="button[delete_identity]" onclick="et2_dialog.confirm(widget,'Delete identity','Delete')" image="delete" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
59
admin/templates/default/mailwizard.folder.xet
Normal file
59
admin/templates/default/mailwizard.folder.xet
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailwizard.folder" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="dialogHeader">
|
||||||
|
<description value="Step 2: Folder" span="all" class="emailadmin_header"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Sent folder" for="acc_folder_sent"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_sent" options="Select one ..."/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Trash folder" for="acc_folder_trash"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_trash" options="Select one ..."/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Drafts folder" for="acc_folder_draft"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_draft" options="Select one ..."/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Templates folder" for="acc_folder_template"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_template" options="Select one ..."/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Junk folder" for="acc_folder_junk"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_junk" options="Select one ..."/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="dialogFooterToolbar">
|
||||||
|
<hbox span="all">
|
||||||
|
<button label="Continue" id="button[continue]" image="continue" background_image="1"/>
|
||||||
|
<button label="Back" id="button[back]" image="back" background_image="1"/>
|
||||||
|
<button label="Cancel" id="button[cancel]" onclick="window.close();" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<textbox multiline="true" id="folder_output" readonly="true" span="all"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
53
admin/templates/default/mailwizard.sieve.xet
Normal file
53
admin/templates/default/mailwizard.sieve.xet
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailwizard.sieve" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="dialogHeader">
|
||||||
|
<description value="Step 3: Sieve - server side mail filtering" span="all" class="emailadmin_header"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Enable Sieve" for="acc_sieve_enabled"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-bool" id="acc_sieve_enabled"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Sieve server" for="acc_sieve_host"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_sieve_host" onchange="app.admin.wizard_sieve_onchange" size="32" maxlength="128"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Secure connection" for="acc_sieve_ssl"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_sieve_ssl" onchange="app.admin.wizard_sieve_ssl_onchange" class="emailadmin_ssl"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_sieve_port" onchange="app.admin.wizard_sieve_onchange" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row class="dialogFooterToolbar">
|
||||||
|
<hbox span="all">
|
||||||
|
<button label="Continue" id="button[continue]" onclick="app.admin.wizard_detect" image="continue" background_image="1"/>
|
||||||
|
<button label="Back" id="button[back]" image="back" background_image="1"/>
|
||||||
|
<button label="Manual entry" id="button[manual]" onclick="app.admin.wizard_manual" image="edit" background_image="1"/>
|
||||||
|
<buttononly label="Cancel" id="button[cancel]" onclick="window.close();" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<image src="admin/progress" span="all" class="emailadmin_progress"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<textbox multiline="true" id="sieve_output" readonly="true" span="all"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
55
admin/templates/default/mailwizard.smtp.xet
Normal file
55
admin/templates/default/mailwizard.smtp.xet
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailwizard.smtp" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="dialogHeader">
|
||||||
|
<description value="Step 4: SMTP - outgoing mail" span="all" class="emailadmin_header"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Username" for="acc_smtp_username"/>
|
||||||
|
<textbox blur="if authentication required" id="acc_smtp_username" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Password" for="acc_smtp_password"/>
|
||||||
|
<passwd id="acc_smtp_password" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="SMTP server" for="acc_smtp_host"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_smtp_host" size="32" maxlength="128"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Secure connection" for="acc_smtp_ssl"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_smtp_ssl" onchange="app.admin.wizard_smtp_ssl_onchange" class="emailadmin_ssl"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_smtp_port" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row class="dialogFooterToolbar">
|
||||||
|
<hbox span="all">
|
||||||
|
<button label="Continue" id="button[continue]" onclick="app.admin.wizard_detect" image="continue" background_image="1"/>
|
||||||
|
<button label="Back" id="button[back]" image="back" background_image="1"/>
|
||||||
|
<button label="Manual entry" id="button[manual]" onclick="app.admin.wizard_manual" image="edit" background_image="1"/>
|
||||||
|
<buttononly label="Cancel" id="button[cancel]" onclick="window.close();" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<image src="admin/progress" span="all" class="emailadmin_progress"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<textbox multiline="true" id="smtp_output" readonly="true" span="all"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
59
admin/templates/default/mailwizard.xet
Normal file
59
admin/templates/default/mailwizard.xet
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailwizard" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="dialogHeader">
|
||||||
|
<description value="Step 1: IMAP - incoming mail" span="all" class="emailadmin_header"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="EMail address"/>
|
||||||
|
<url-email id="ident_email" needed="1" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Username" for="acc_imap_username"/>
|
||||||
|
<textbox blur="if different from EMail address" id="acc_imap_username" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Password" for="acc_imap_password"/>
|
||||||
|
<passwd id="acc_imap_password" needed="1" size="32" maxlength="128" autocomplete="off"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="IMAP server" for="acc_imap_host"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_imap_host" size="32" maxlength="128"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Secure connection" for="acc_imap_ssl"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_imap_ssl" onchange="app.admin.wizard_imap_ssl_onchange" class="emailadmin_ssl"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_imap_port" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row class="dialogFooterToolbar">
|
||||||
|
<hbox span="all">
|
||||||
|
<button label="Continue" id="button[continue]" onclick="app.admin.wizard_detect" image="continue" background_image="1"/>
|
||||||
|
<button label="Manual entry" id="button[manual]" onclick="app.admin.wizard_manual" image="edit" background_image="1"/>
|
||||||
|
<button label="Skip IMAP" id="button[skip_imap]" class="@manual_class" novalidate="1" image="bullet" background_image="1"/>
|
||||||
|
<buttononly label="Cancel" id="button[cancel]" onclick="window.close();" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<image src="admin/progress" span="all" class="emailadmin_progress"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<textbox multiline="true" id="output" readonly="true" span="all"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
349
admin/templates/mobile/mailaccount.xet
Normal file
349
admin/templates/mobile/mailaccount.xet
Normal file
@ -0,0 +1,349 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailaccount.identity" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="ident_id" value="Identity"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="ident_id" no_lang="1" onchange="1" class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description/>
|
||||||
|
<checkbox label="allow users to create further identities" id="acc_further_identities" class="emailadmin_no_user"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="ident_name" value="Name"/>
|
||||||
|
<textbox id="ident_name" maxlength="128" blur="default your name and email" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="ident_realname" value="Your name"/>
|
||||||
|
<hbox>
|
||||||
|
<textbox id="ident_realname" maxlength="128" width="96%"/>
|
||||||
|
<buttononly label="Placeholders" id="button[placeholders]" onclick="window.open(egw::link('/index.php','menuaction=addressbook.addressbook_merge.show_replacements&nonavbar=1'),'_blank','dependent=yes,width=860,height=620,scrollbars=yes,status=yes'); return false;" options="dialog_help"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="ident_org" value="Organisation"/>
|
||||||
|
<textbox id="ident_org" maxlength="128" span="all" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="ident_email" value="EMail address"/>
|
||||||
|
<url-email id="ident_email" options="80,128" width="96%"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<htmlarea expand_toolbar="false" height="125px" id="ident_signature" span="all" width="100%"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.imap" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="emailadmin_no_single">
|
||||||
|
<description for="acc_imap_logintype" value="Type"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_imap_type" class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="emailadmin_no_single">
|
||||||
|
<description for="acc_imap_logintype" value="Login" class="emailadmin_no_single"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup class="emailadmin_no_single et2_fullWidth" statustext="How username get constructed" id="acc_imap_logintype"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_imap_username" value="Username"/>
|
||||||
|
<textbox id="acc_imap_username" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_domain" value="Domain" class="emailadmin_no_single"/>
|
||||||
|
<textbox id="acc_domain" maxlength="128" class="emailadmin_no_single et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_imap_password" value="Password"/>
|
||||||
|
<hbox>
|
||||||
|
<passwd id="acc_imap_password" maxlength="128" autocomplete="off" width="96%"/>
|
||||||
|
<description id="acc_imap_account_id" class="emailadmin_diagnostic"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_imap_host" value="IMAP server"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_imap_host" maxlength="128" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_imap_ssl" value="Secure connection"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup class="emailadmin_ssl" id="acc_imap_ssl" needed="1" onchange="app.admin.wizard_imap_ssl_onchange" width="30%"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_imap_port" needed="1" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row class="emailadmin_no_single">
|
||||||
|
<groupbox span="all" class="emailadmin_imap_admin">
|
||||||
|
<caption label="IMAP administration"/>
|
||||||
|
<grid>
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="acc_imap_admin_username" value="Admin user"/>
|
||||||
|
<textbox id="acc_imap_admin_username" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_imap_admin_password" value="Password"/>
|
||||||
|
<passwd id="acc_imap_admin_password" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</groupbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.folder" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_sent" value="Sent folder"/>
|
||||||
|
<taglist id="acc_folder_sent" empty_label="Select one ..." maxSelection="1" autocomplete_url="" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_trash" value="Trash folder"/>
|
||||||
|
<taglist id="acc_folder_trash" empty_label="Select one ..." maxSelection="1" autocomplete_url="" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_draft" value="Drafts folder"/>
|
||||||
|
<taglist id="acc_folder_draft" empty_label="Select one ..." maxSelection="1" autocomplete_url="" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_template" value="Templates folder"/>
|
||||||
|
<taglist id="acc_folder_template" empty_label="Select one ..." maxSelection="1" autocomplete_url="" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_junk" value="Junk folder"/>
|
||||||
|
<taglist id="acc_folder_junk" empty_label="Select one ..." maxSelection="1" autocomplete_url="" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_folder_junk" value="Notify about new mail in this folders"/>
|
||||||
|
<vbox>
|
||||||
|
<taglist id="notify_folders" empty_label="Select one ..." autocomplete_url="" onchange="app.admin.change_folders" class="et2_fullWidth"/>
|
||||||
|
<checkbox id="notify_save_default" label="save as default"/>
|
||||||
|
<checkbox id="notify_use_default" label="use default"/>
|
||||||
|
</vbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.sieve" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="acc_sieve_enabled" value="Enable Sieve"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-bool" id="acc_sieve_enabled" needed="1" class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_sieve_host" value="Sieve server"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_sieve_host" onchange="app.admin.wizard_sieve_onchange" maxlength="128" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_sieve_ssl" value="Secure connection"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup class="emailadmin_ssl" id="acc_sieve_ssl" onchange="app.admin.wizard_sieve_ssl_onchange" width="30%"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_sieve_port" onchange="app.admin.wizard_sieve_onchange" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Vacation messages with start and end date require an admin account to be set!" span="all" class="emailadmin_no_single"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.smtp" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="emailadmin_no_single">
|
||||||
|
<description for="acc_smtp_type" value="Type"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_smtp_type" onchange="1" class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="emailadmin_no_single">
|
||||||
|
<description for="acc_smtp_auth_session" value="Authentication"/>
|
||||||
|
<checkbox label="Use username+password from current user" id="acc_smtp_auth_session"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_smtp_username" value="Username"/>
|
||||||
|
<textbox blur="if authentication required" id="acc_smtp_username" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_smtp_password" value="Password"/>
|
||||||
|
<hbox>
|
||||||
|
<passwd id="acc_smtp_password" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
<description id="acc_smtp_account_id" class="emailadmin_diagnostic"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_smtp_host" value="SMTP server"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_smtp_host" needed="1" maxlength="128" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description for="acc_smtp_ssl" value="Secure connection"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup class="emailadmin_ssl" id="acc_smtp_ssl" needed="1" onchange="app.admin.wizard_smtp_ssl_onchange" width="30%"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_smtp_port" needed="1" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount.aliases" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description for="mailLocalAddress" value="EMail address"/>
|
||||||
|
<url-email id="mailLocalAddress" options="32,128" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description/>
|
||||||
|
<checkbox label="Email account active" id="accountStatus" selected_value="active"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="mailAlternateAddress" value="Alternate email address"/>
|
||||||
|
<taglist id="mailAlternateAddress" autocomplete_url="" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row disabled="@no_forward_available">
|
||||||
|
<description for="mailForwardingAddress" value="Forward email's to"/>
|
||||||
|
<taglist id="mailForwardingAddress" autocomplete_url="" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row disabled="@no_forward_available">
|
||||||
|
<description/>
|
||||||
|
<vbox>
|
||||||
|
<checkbox label="Forward only" id="deliveryMode" selected_value="forwardOnly" onchange="if (widget.getValue()) et2_dialog.alert('Forward only disables IMAP mailbox / storing of mails and just forwards them to given address.','Forward only');"/>
|
||||||
|
<checkbox label="Allow users to change forwards" id="acc_user_forward"/>
|
||||||
|
</vbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="quotaLimit" value="Quota (MB)"/>
|
||||||
|
<hbox>
|
||||||
|
<textbox type="integer" id="quotaLimit"/>
|
||||||
|
<description value="Leave empty for no quota"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="quotaUsed" value="Currently:"/>
|
||||||
|
<textbox type="integer" id="quotaUsed" readonly="true"/>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@admin_actions">
|
||||||
|
<description value="Administration"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@admin_actions">
|
||||||
|
<toolbar id="admin_actions" colspan="2" default_execute="app.admin.account_edit_action"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="admin.mailaccount" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="@hidebuttons" class="dialogHeadbar" >
|
||||||
|
<hbox span="all">
|
||||||
|
<button label="Save" id="button[save]"/>
|
||||||
|
<button label="Apply" id="button[apply]" />
|
||||||
|
<button statustext="Use wizard to detect or verify configuration" label="Wizard" id="button[wizard]" image="magicwand" background_image="1"/>
|
||||||
|
<button align="right" label="Delete" id="button[delete]" onclick="et2_dialog.confirm(widget,'Delete this account','Delete')"/>
|
||||||
|
<button align="right" label="Delete identity" id="button[delete_identity]" onclick="et2_dialog.confirm(widget,'Delete identity','Delete')" image="delete" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@accounts" class="dialogHeader">
|
||||||
|
<description for="acc_id" value="Mail account"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_id" onchange="app.admin.change_account" class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description for="acc_name" value="Name of account"/>
|
||||||
|
<hbox>
|
||||||
|
<textbox id="acc_name" needed="1" class="et2_fullWidth"/>
|
||||||
|
<description align="right" value="$cont[acc_id]" class="emailadmin_diagnostic"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row class="emailadmin_no_user">
|
||||||
|
<description for="account_id" value="Valid for"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-account" id="account_id" onchange="app.admin.account_hide_not_applying" options="Everyone,both" width="96%"/>
|
||||||
|
</menulist>
|
||||||
|
<buttononly label="Select multiple" id="button[multiple]" onclick="app.admin.edit_multiple" options="users"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description/>
|
||||||
|
<checkbox label="account editable by user" id="acc_user_editable"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<tabbox id="tabs" span="all" width="100%" align_tabs="v">
|
||||||
|
<tabs>
|
||||||
|
<tab id="admin.mailaccount.identity" label="Identity+Signature" statustext="Identity&Signature"/>
|
||||||
|
<tab id="admin.mailaccount.imap" label="IMAP" statustext="incoming mail"/>
|
||||||
|
<tab id="admin.mailaccount.folder" label="Folder" statustext="Folder"/>
|
||||||
|
<tab id="admin.mailaccount.sieve" label="Sieve" statustext="serverside filtering"/>
|
||||||
|
<tab id="admin.mailaccount.smtp" label="SMTP" statustext="outgoing mail"/>
|
||||||
|
<tab id="admin.mailaccount.aliases" label="Aliases+Forwards" statustext="Aliases, Forwarding, Quota, ..."/>
|
||||||
|
</tabs>
|
||||||
|
<tabpanels>
|
||||||
|
<template id="admin.mailaccount.identity"/>
|
||||||
|
<template id="admin.mailaccount.imap"/>
|
||||||
|
<template id="admin.mailaccount.folder"/>
|
||||||
|
<template id="admin.mailaccount.sieve"/>
|
||||||
|
<template id="admin.mailaccount.smtp"/>
|
||||||
|
<template id="admin.mailaccount.aliases"/>
|
||||||
|
</tabpanels>
|
||||||
|
</tabbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
64
admin/templates/mobile/mailwizard.folder.xet
Normal file
64
admin/templates/mobile/mailwizard.folder.xet
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailwizard.folder" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="@hidebuttons" class="dialogHeadbar" >
|
||||||
|
<hbox span="all">
|
||||||
|
<button label="Continue" id="button[continue]" onclick="app.admin.wizard_detect" image="continue" background_image="1"/>
|
||||||
|
<button label="Back" id="button[back]" image="back" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@showsearchbuttons" class="dialogHeadbar">
|
||||||
|
<hbox span="all" width="100%">
|
||||||
|
<button label="Search" id="button[search]" image="search" background_image="1"/>
|
||||||
|
<button label="Cancel" id="button[cancelsearch]" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Step 2: Folder" span="all" class="emailadmin_header"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Sent folder" for="acc_folder_sent"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_sent" options="Select one ..." class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Trash folder" for="acc_folder_trash"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_trash" options="Select one ..." class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Drafts folder" for="acc_folder_draft"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_draft" options="Select one ..." class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Templates folder" for="acc_folder_template"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_template" options="Select one ..." class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Junk folder" for="acc_folder_junk"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_folder_junk" options="Select one ..." class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<textbox multiline="true" id="folder_output" readonly="true" span="all"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
58
admin/templates/mobile/mailwizard.sieve.xet
Normal file
58
admin/templates/mobile/mailwizard.sieve.xet
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailwizard.sieve" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="@hidebuttons" class="dialogHeadbar" >
|
||||||
|
<hbox span="all">
|
||||||
|
<button label="Continue" id="button[continue]" onclick="app.admin.wizard_detect" image="continue" background_image="1"/>
|
||||||
|
<button label="Back" id="button[back]" image="back" background_image="1"/>
|
||||||
|
<button label="Manual entry" id="button[manual]" onclick="app.admin.wizard_manual" image="manual" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@showsearchbuttons" class="dialogHeadbar">
|
||||||
|
<hbox span="all" width="100%">
|
||||||
|
<button label="Search" id="button[search]" image="search" background_image="1"/>
|
||||||
|
<button label="Cancel" id="button[cancelsearch]" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Step 3: Sieve - server side mail filtering" span="all" class="emailadmin_header"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Enable Sieve" for="acc_sieve_enabled"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-bool" id="acc_sieve_enabled" class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Sieve server" for="acc_sieve_host"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_sieve_host" onchange="app.admin.wizard_sieve_onchange" maxlength="128" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Secure connection" for="acc_sieve_ssl"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_sieve_ssl" onchange="app.admin.wizard_sieve_ssl_onchange" class="emailadmin_ssl"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_sieve_port" onchange="app.admin.wizard_sieve_onchange" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<image src="admin/progress" span="all" class="emailadmin_progress"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<textbox multiline="true" id="sieve_output" readonly="true" span="all"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
60
admin/templates/mobile/mailwizard.smtp.xet
Normal file
60
admin/templates/mobile/mailwizard.smtp.xet
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailwizard.smtp" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="@hidebuttons" class="dialogHeadbar" >
|
||||||
|
<hbox span="all">
|
||||||
|
<button label="Continue" id="button[continue]" onclick="app.admin.wizard_detect" image="continue" background_image="1"/>
|
||||||
|
<button label="Back" id="button[back]" image="back" background_image="1"/>
|
||||||
|
<button label="Manual entry" id="button[manual]" onclick="app.admin.wizard_manual" image="manual" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@showsearchbuttons" class="dialogHeadbar">
|
||||||
|
<hbox span="all" width="100%">
|
||||||
|
<button label="Search" id="button[search]" image="search" background_image="1"/>
|
||||||
|
<button label="Cancel" id="button[cancelsearch]" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Step 4: SMTP - outgoing mail" span="all" class="emailadmin_header"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Username" for="acc_smtp_username"/>
|
||||||
|
<textbox blur="if authentication required" id="acc_smtp_username" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Password" for="acc_smtp_password"/>
|
||||||
|
<passwd id="acc_smtp_password" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="SMTP server" for="acc_smtp_host"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_smtp_host" maxlength="128" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Secure connection" for="acc_smtp_ssl"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_smtp_ssl" onchange="app.admin.wizard_smtp_ssl_onchange" class="emailadmin_ssl"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_smtp_port" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<image src="admin/progress" span="all" class="emailadmin_progress"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<textbox multiline="true" id="smtp_output" readonly="true" span="all"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
64
admin/templates/mobile/mailwizard.xet
Normal file
64
admin/templates/mobile/mailwizard.xet
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="admin.mailwizard" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width="120"/>
|
||||||
|
<column width="600"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="@hidebuttons" class="dialogHeadbar" >
|
||||||
|
<hbox span="all">
|
||||||
|
<button label="Continue" id="button[continue]" onclick="app.admin.wizard_detect" image="continue" background_image="1"/>
|
||||||
|
<button label="Manual entry" id="button[manual]" onclick="app.admin.wizard_manual" image="edit" background_image="1"/>
|
||||||
|
<button label="Skip IMAP" id="button[skip_imap]" class="@manual_class" novalidate="1" image="bullet" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@showsearchbuttons" class="dialogHeadbar">
|
||||||
|
<hbox span="all" width="100%">
|
||||||
|
<button label="Search" id="button[search]" image="search" background_image="1"/>
|
||||||
|
<button label="Cancel" id="button[cancelsearch]" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Step 1: IMAP - incoming mail" span="all" class="emailadmin_header"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="EMail address"/>
|
||||||
|
<url-email id="ident_email" needed="1" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Username" for="acc_imap_username"/>
|
||||||
|
<textbox blur="if different from EMail address" id="acc_imap_username" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Password" for="acc_imap_password"/>
|
||||||
|
<passwd id="acc_imap_password" needed="1" maxlength="128" autocomplete="off" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="IMAP server" for="acc_imap_host"/>
|
||||||
|
<textbox blur="Hostname or IP" id="acc_imap_host" maxlength="128" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="@manual_class">
|
||||||
|
<description value="Secure connection" for="acc_imap_ssl"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup id="acc_imap_ssl" onchange="app.admin.wizard_imap_ssl_onchange" class="emailadmin_ssl"/>
|
||||||
|
</menulist>
|
||||||
|
<textbox type="integer" label="Port" id="acc_imap_port" class="emailadmin_port"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<image src="admin/progress" span="all" class="emailadmin_progress"/>
|
||||||
|
<description/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<textbox multiline="true" id="output" readonly="true" span="all"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
@ -106,6 +106,60 @@ td.admin_userAgent span {
|
|||||||
#admin-acl_filter {
|
#admin-acl_filter {
|
||||||
max-width: 100% !important;
|
max-width: 100% !important;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* mail account wizard and edit
|
||||||
|
*/
|
||||||
|
.emailadmin_manual {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.emailadmin_progress {
|
||||||
|
display: none;
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
.emailadmin_ssl {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.emailadmin_port {
|
||||||
|
width: 5em;
|
||||||
|
}
|
||||||
|
.emailadmin_header {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_tabs {
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_acc_imap_logintype {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
span.emailadmin_diagnostic,
|
||||||
|
.emailadmin_diagnostic {
|
||||||
|
color: lightgray;
|
||||||
|
}
|
||||||
|
span#admin-mailaccount_acc_id {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_acc_smtp_account_id {
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_button\[multiple\] {
|
||||||
|
height: auto;
|
||||||
|
padding-left: 5px;
|
||||||
|
margin: 2px;
|
||||||
|
width: 16px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_button\[placeholders\] {
|
||||||
|
height: 16px;
|
||||||
|
padding-left: 5px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
#admin-mailaccount_mailLocalAddress {
|
||||||
|
width: 98%;
|
||||||
|
}
|
||||||
|
select#admin-mailaccount_ident_id {
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
@media all {
|
@media all {
|
||||||
div.dhtmlxTree td.standartTreeRow span.selectedTreeRow {
|
div.dhtmlxTree td.standartTreeRow span.selectedTreeRow {
|
||||||
background-color: #ffdd73;
|
background-color: #ffdd73;
|
||||||
|
@ -506,6 +506,48 @@ class Accounts
|
|||||||
$account['account_firstname'] , $account['account_lastname'], $account_id);
|
$account['account_firstname'] , $account['account_lastname'], $account_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format an email address according to the system standard
|
||||||
|
*
|
||||||
|
* Convert all european special chars to ascii and fallback to the accountname, if nothing left eg. chiniese
|
||||||
|
*
|
||||||
|
* @param string $first firstname
|
||||||
|
* @param string $last lastname
|
||||||
|
* @param string $account account-name (lid)
|
||||||
|
* @param string $domain =null domain-name or null to use eGW's default domain $GLOBALS['egw_info']['server']['mail_suffix]
|
||||||
|
* @return string with email address
|
||||||
|
*/
|
||||||
|
static function email($first,$last,$account,$domain=null)
|
||||||
|
{
|
||||||
|
foreach (array('first','last','account') as $name)
|
||||||
|
{
|
||||||
|
$$name = Translation::to_ascii($$name);
|
||||||
|
}
|
||||||
|
//echo " --> ('$first', '$last', '$account')";
|
||||||
|
if (!$first && !$last) // fallback to the account-name, if real names contain only special chars
|
||||||
|
{
|
||||||
|
$first = '';
|
||||||
|
$last = $account;
|
||||||
|
}
|
||||||
|
if (!$first || !$last)
|
||||||
|
{
|
||||||
|
$dot = $underscore = '';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$dot = '.';
|
||||||
|
$underscore = '_';
|
||||||
|
}
|
||||||
|
if (!$domain) $domain = $GLOBALS['egw_info']['server']['mail_suffix'];
|
||||||
|
|
||||||
|
$email = str_replace(array('first','last','initial','account','dot','underscore','-'),
|
||||||
|
array($first,$last,substr($first,0,1),$account,$dot,$underscore,''),
|
||||||
|
$GLOBALS['egw_info']['server']['email_address_format'] ? $GLOBALS['egw_info']['server']['email_address_format'] : 'first-dot-last').
|
||||||
|
($domain ? '@'.$domain : '');
|
||||||
|
//echo " = '$email'</p>\n";
|
||||||
|
return $email;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a default description for stock groups: Admins, Default, NoGroup
|
* Add a default description for stock groups: Admins, Default, NoGroup
|
||||||
*
|
*
|
||||||
|
@ -28,7 +28,6 @@ namespace EGroupware\Api\Accounts;
|
|||||||
use EGroupware\Api;
|
use EGroupware\Api;
|
||||||
|
|
||||||
// explicitly reference classes still in phpgwapi of old structure
|
// explicitly reference classes still in phpgwapi of old structure
|
||||||
use emailadmin_smtp_sql;
|
|
||||||
use acl;
|
use acl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -142,10 +141,10 @@ class Sql
|
|||||||
}
|
}
|
||||||
// during setup emailadmin might not yet be installed and running below query
|
// during setup emailadmin might not yet be installed and running below query
|
||||||
// will abort transaction in PostgreSQL
|
// will abort transaction in PostgreSQL
|
||||||
elseif (!isset($GLOBALS['egw_setup']) || in_array(emailadmin_smtp_sql::TABLE, $this->db->table_names(true)))
|
elseif (!isset($GLOBALS['egw_setup']) || in_array(Api\Mail\Smtp\Sql::TABLE, $this->db->table_names(true)))
|
||||||
{
|
{
|
||||||
$extra_cols = emailadmin_smtp_sql::TABLE.'.mail_value AS account_email,';
|
$extra_cols = Api\Mail\Smtp\Sql::TABLE.'.mail_value AS account_email,';
|
||||||
$join = 'LEFT JOIN '.emailadmin_smtp_sql::TABLE.' ON '.$this->table.'.account_id=-'.emailadmin_smtp_sql::TABLE.'.account_id AND mail_type='.emailadmin_smtp_sql::TYPE_ALIAS;
|
$join = 'LEFT JOIN '.Api\Mail\Smtp\Sql::TABLE.' ON '.$this->table.'.account_id=-'.Api\Mail\Smtp\Sql::TABLE.'.account_id AND mail_type='.Api\Mail\Smtp\Sql::TYPE_ALIAS;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
$rs = $this->db->select($this->table, $extra_cols.$this->table.'.*',
|
$rs = $this->db->select($this->table, $extra_cols.$this->table.'.*',
|
||||||
@ -239,29 +238,29 @@ class Sql
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// store group-email in mailaccounts table
|
// store group-email in mailaccounts table
|
||||||
if ($data['account_id'] < 0 && class_exists('emailadmin_smtp_sql', isset($data['account_email'])))
|
if ($data['account_id'] < 0 && class_exists('Api\Mail\Smtp\Sql', isset($data['account_email'])))
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
if (isset($GLOBALS['egw_info']['apps']) && !isset($GLOBALS['egw_info']['apps']['emailadmin']) ||
|
if (isset($GLOBALS['egw_info']['apps']) && !isset($GLOBALS['egw_info']['apps']['emailadmin']) ||
|
||||||
isset($GLOBALS['egw_setup']) && !in_array(emailadmin_smtp_sql::TABLE, $this->db->table_names(true)))
|
isset($GLOBALS['egw_setup']) && !in_array(Api\Mail\Smtp\Sql::TABLE, $this->db->table_names(true)))
|
||||||
{
|
{
|
||||||
// cant store email, if emailadmin not (yet) installed
|
// cant store email, if emailadmin not (yet) installed
|
||||||
}
|
}
|
||||||
elseif (empty($data['account_email']))
|
elseif (empty($data['account_email']))
|
||||||
{
|
{
|
||||||
$this->db->delete(emailadmin_smtp_sql::TABLE, array(
|
$this->db->delete(Api\Mail\Smtp\Sql::TABLE, array(
|
||||||
'account_id' => $data['account_id'],
|
'account_id' => $data['account_id'],
|
||||||
'mail_type' => emailadmin_smtp_sql::TYPE_ALIAS,
|
'mail_type' => Api\Mail\Smtp\Sql::TYPE_ALIAS,
|
||||||
), __LINE__, __FILE__, emailadmin_smtp_sql::APP);
|
), __LINE__, __FILE__, Api\Mail\Smtp\Sql::APP);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->db->insert(emailadmin_smtp_sql::TABLE, array(
|
$this->db->insert(Api\Mail\Smtp\Sql::TABLE, array(
|
||||||
'mail_value' => $data['account_email'],
|
'mail_value' => $data['account_email'],
|
||||||
), array(
|
), array(
|
||||||
'account_id' => $data['account_id'],
|
'account_id' => $data['account_id'],
|
||||||
'mail_type' => emailadmin_smtp_sql::TYPE_ALIAS,
|
'mail_type' => Api\Mail\Smtp\Sql::TYPE_ALIAS,
|
||||||
), __LINE__, __FILE__, emailadmin_smtp_sql::APP);
|
), __LINE__, __FILE__, Api\Mail\Smtp\Sql::APP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ignore not (yet) existing mailaccounts table (does NOT work in PostgreSQL, because of transaction!)
|
// ignore not (yet) existing mailaccounts table (does NOT work in PostgreSQL, because of transaction!)
|
||||||
@ -429,14 +428,14 @@ class Sql
|
|||||||
$email_cols = array('email');
|
$email_cols = array('email');
|
||||||
|
|
||||||
// Add in group email searching
|
// Add in group email searching
|
||||||
if (!isset($GLOBALS['egw_setup']) || in_array(emailadmin_smtp_sql::TABLE, $this->db->table_names(true)))
|
if (!isset($GLOBALS['egw_setup']) || in_array(Api\Mail\Smtp\Sql::TABLE, $this->db->table_names(true)))
|
||||||
{
|
{
|
||||||
$email_cols = array('coalesce('.$this->contacts_table.'.contact_email,'.emailadmin_smtp_sql::TABLE.'.mail_value) as email');
|
$email_cols = array('coalesce('.$this->contacts_table.'.contact_email,'.Api\Mail\Smtp\Sql::TABLE.'.mail_value) as email');
|
||||||
if ($this->db->Type == 'mysql' && !preg_match('/[\x80-\xFF]/', $param['query']))
|
if ($this->db->Type == 'mysql' && !preg_match('/[\x80-\xFF]/', $param['query']))
|
||||||
{
|
{
|
||||||
$search_cols[] = emailadmin_smtp_sql::TABLE.'.mail_value';
|
$search_cols[] = Api\Mail\Smtp\Sql::TABLE.'.mail_value';
|
||||||
}
|
}
|
||||||
$join .= ' LEFT JOIN '.emailadmin_smtp_sql::TABLE.' ON '.$this->table.'.account_id=-'.emailadmin_smtp_sql::TABLE.'.account_id AND mail_type='.emailadmin_smtp_sql::TYPE_ALIAS;
|
$join .= ' LEFT JOIN '.Api\Mail\Smtp\Sql::TABLE.' ON '.$this->table.'.account_id=-'.Api\Mail\Smtp\Sql::TABLE.'.account_id AND mail_type='.Api\Mail\Smtp\Sql::TYPE_ALIAS;
|
||||||
}
|
}
|
||||||
|
|
||||||
$filter = array();
|
$filter = array();
|
||||||
@ -525,9 +524,9 @@ class Sql
|
|||||||
case 'email':
|
case 'email':
|
||||||
$criteria['email'] = $query;
|
$criteria['email'] = $query;
|
||||||
// Group email
|
// Group email
|
||||||
if(in_array(emailadmin_smtp_sql::TABLE, $this->db->table_names(true)))
|
if(in_array(Api\Mail\Smtp\Sql::TABLE, $this->db->table_names(true)))
|
||||||
{
|
{
|
||||||
$criteria[emailadmin_smtp_sql::TABLE.'.mail_value'] = $query;
|
$criteria[Api\Mail\Smtp\Sql::TABLE.'.mail_value'] = $query;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -15,9 +15,6 @@ namespace EGroupware\Api\Accounts;
|
|||||||
|
|
||||||
use EGroupware\Api;
|
use EGroupware\Api;
|
||||||
|
|
||||||
// explicitly reference classes still in phpgwapi
|
|
||||||
use emailadmin_account;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Univention LDAP Backend for accounts
|
* Univention LDAP Backend for accounts
|
||||||
*
|
*
|
||||||
@ -84,9 +81,9 @@ class Univention extends Ldap
|
|||||||
// get_default() does not work for Adminstrator, try acc_id=1 instead
|
// get_default() does not work for Adminstrator, try acc_id=1 instead
|
||||||
// if everything fails try hostname ...
|
// if everything fails try hostname ...
|
||||||
try {
|
try {
|
||||||
if (!($account = emailadmin_account::get_default(false, false, false)))
|
if (!($account = Api\Mail\Account::get_default(false, false, false)))
|
||||||
{
|
{
|
||||||
$account = emailadmin_account::read(1);
|
$account = Api\Mail\Account::read(1);
|
||||||
}
|
}
|
||||||
$hostname = $account->acc_imap_host;
|
$hostname = $account->acc_imap_host;
|
||||||
}
|
}
|
||||||
|
@ -11,9 +11,6 @@
|
|||||||
|
|
||||||
namespace EGroupware\Api\Auth;
|
namespace EGroupware\Api\Auth;
|
||||||
|
|
||||||
// explicitly import classes still in phpgwapi
|
|
||||||
use common; // email_address
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Auth from PAM
|
* Auth from PAM
|
||||||
*
|
*
|
||||||
@ -47,7 +44,7 @@ class Pam implements Backend
|
|||||||
{
|
{
|
||||||
$lastname = array_pop($parts);
|
$lastname = array_pop($parts);
|
||||||
$firstname = implode(' ',$parts);
|
$firstname = implode(' ',$parts);
|
||||||
$email = common::email_address($firstname, $lastname, $username);
|
$email = Api\Accounts::email($firstname, $lastname, $username);
|
||||||
|
|
||||||
$GLOBALS['auto_create_acct'] = array(
|
$GLOBALS['auto_create_acct'] = array(
|
||||||
'firstname' => $firstname,
|
'firstname' => $firstname,
|
||||||
|
@ -16,7 +16,6 @@ use EGroupware\Api;
|
|||||||
|
|
||||||
// explicitly name old, not yet converted api classes
|
// explicitly name old, not yet converted api classes
|
||||||
use translation; // mail specific stuff not in Api\Translation
|
use translation; // mail specific stuff not in Api\Translation
|
||||||
use emailadmin_imapbase;
|
|
||||||
|
|
||||||
require_once(__DIR__.'/htmLawed/htmLawed.php');
|
require_once(__DIR__.'/htmLawed/htmLawed.php');
|
||||||
|
|
||||||
@ -433,7 +432,7 @@ function hl_email_tag_transform($element, $attribute_array=0)
|
|||||||
if (strpos($attribute_array['href'],'denied:javascript')===0) $attribute_array['href']='';
|
if (strpos($attribute_array['href'],'denied:javascript')===0) $attribute_array['href']='';
|
||||||
if (isset($attribute_array['name']) && isset($attribute_array['id'])) $attribute_array['id'] = $attribute_array['name'];
|
if (isset($attribute_array['name']) && isset($attribute_array['id'])) $attribute_array['id'] = $attribute_array['name'];
|
||||||
if (strpos($attribute_array['href'],'@')!==false) $attribute_array['href'] = str_replace('@','%40',$attribute_array['href']);
|
if (strpos($attribute_array['href'],'@')!==false) $attribute_array['href'] = str_replace('@','%40',$attribute_array['href']);
|
||||||
if (strpos($attribute_array['href'],'#')===0 && (isset(emailadmin_imapbase::$htmLawed_config['transform_anchor']) && emailadmin_imapbase::$htmLawed_config['transform_anchor']===true))
|
if (strpos($attribute_array['href'],'#')===0 && (isset(Api\Mail::$htmLawed_config['transform_anchor']) && Api\Mail::$htmLawed_config['transform_anchor']===true))
|
||||||
{
|
{
|
||||||
$attribute_array['href'] = "javascript:GoToAnchor('".trim(substr($attribute_array['href'],1))."');";
|
$attribute_array['href'] = "javascript:GoToAnchor('".trim(substr($attribute_array['href'],1))."');";
|
||||||
}
|
}
|
||||||
|
6987
api/src/Mail.php
Normal file
6987
api/src/Mail.php
Normal file
File diff suppressed because it is too large
Load Diff
1683
api/src/Mail/Account.php
Normal file
1683
api/src/Mail/Account.php
Normal file
File diff suppressed because it is too large
Load Diff
100
api/src/Mail/Cache.php
Normal file
100
api/src/Mail/Cache.php
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Horde_Cache compatible class using Api\Cache
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb-AT-stylite.de>
|
||||||
|
* @copyright (c) 2013-16 by Ralf Becker <rb-AT-stylite.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Horde_Cache compatible class using egw_cache
|
||||||
|
*/
|
||||||
|
class Cache
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* App to use
|
||||||
|
*/
|
||||||
|
const APP = 'mail';
|
||||||
|
/**
|
||||||
|
* How to cache: instance-specific
|
||||||
|
*/
|
||||||
|
const LEVEL = Api\Cache::INSTANCE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve cached data.
|
||||||
|
*
|
||||||
|
* @param string $key Object ID to query.
|
||||||
|
* @param integer $lifetime Lifetime of the object in seconds.
|
||||||
|
*
|
||||||
|
* @return mixed Cached data, or false if none was found.
|
||||||
|
*/
|
||||||
|
public function get($key, $lifetime = 0)
|
||||||
|
{
|
||||||
|
unset($lifetime); // not (yet) used, but required by function signature
|
||||||
|
|
||||||
|
$ret = Api\Cache::getCache(self::LEVEL, 'mail', $key);
|
||||||
|
|
||||||
|
return !is_null($ret) ? $ret : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store an object in the cache.
|
||||||
|
*
|
||||||
|
* @param string $key Object ID used as the caching key.
|
||||||
|
* @param mixed $data Data to store in the cache.
|
||||||
|
* @param integer $lifetime Object lifetime - i.e. the time before the
|
||||||
|
* data becomes available for garbage
|
||||||
|
* collection. If 0 will not be GC'd.
|
||||||
|
*/
|
||||||
|
public function set($key, $data, $lifetime = 0)
|
||||||
|
{
|
||||||
|
Api\Cache::setCache(self::LEVEL, 'mail', $key, $data, $lifetime);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a given key exists in the cache, valid for the given
|
||||||
|
* lifetime.
|
||||||
|
*
|
||||||
|
* @param string $key Cache key to check.
|
||||||
|
* @param integer $lifetime Lifetime of the key in seconds.
|
||||||
|
*
|
||||||
|
* @return boolean Existence.
|
||||||
|
*/
|
||||||
|
public function exists($key, $lifetime = 0)
|
||||||
|
{
|
||||||
|
unset($lifetime); // not (yet) used, but required by function signature
|
||||||
|
|
||||||
|
return !is_null(Api\Cache::getCache(self::LEVEL, 'mail', $key));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Expire any existing data for the given key.
|
||||||
|
*
|
||||||
|
* @param string $key Cache key to expire.
|
||||||
|
*
|
||||||
|
* @return boolean Success or failure.
|
||||||
|
*/
|
||||||
|
public function expire($key)
|
||||||
|
{
|
||||||
|
Api\Cache::unsetCache(self::LEVEL, 'mail', $key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears all data from the cache.
|
||||||
|
*
|
||||||
|
* @throws Horde_Cache_Exception
|
||||||
|
*/
|
||||||
|
public function clear()
|
||||||
|
{
|
||||||
|
Api\Cache::flush(self::LEVEL, self::APP);
|
||||||
|
}
|
||||||
|
}
|
477
api/src/Mail/Credentials.php
Normal file
477
api/src/Mail/Credentials.php
Normal file
@ -0,0 +1,477 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Mail account credentials
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb-AT-stylite.de>
|
||||||
|
* @copyright (c) 2013-16 by Ralf Becker <rb-AT-stylite.de>
|
||||||
|
* @author Stylite AG <info@stylite.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mail account credentials are stored in egw_ea_credentials for given
|
||||||
|
* acocunt-id, users and types (imap, smtp and optional admin connection).
|
||||||
|
*
|
||||||
|
* Passwords in credentials are encrypted with either user password from session
|
||||||
|
* or the database password.
|
||||||
|
*/
|
||||||
|
class Credentials
|
||||||
|
{
|
||||||
|
const APP = 'emailadmin';
|
||||||
|
const TABLE = 'egw_ea_credentials';
|
||||||
|
const USER_EDITABLE_JOIN = 'JOIN egw_ea_accounts ON egw_ea_accounts.acc_id=egw_ea_credentials.acc_id AND acc_user_editable=';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Credentials for type IMAP
|
||||||
|
*/
|
||||||
|
const IMAP = 1;
|
||||||
|
/**
|
||||||
|
* Credentials for type SMTP
|
||||||
|
*/
|
||||||
|
const SMTP = 2;
|
||||||
|
/**
|
||||||
|
* Credentials for admin connection
|
||||||
|
*/
|
||||||
|
const ADMIN = 8;
|
||||||
|
/**
|
||||||
|
* All credentials IMAP|SMTP|ADMIN
|
||||||
|
*/
|
||||||
|
const ALL = 11;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Password in cleartext
|
||||||
|
*/
|
||||||
|
const CLEARTEXT = 0;
|
||||||
|
/**
|
||||||
|
* Password encrypted with user password
|
||||||
|
*/
|
||||||
|
const USER = 1;
|
||||||
|
/**
|
||||||
|
* Password encrypted with system secret
|
||||||
|
*/
|
||||||
|
const SYSTEM = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translate type to prefix
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $type2prefix = array(
|
||||||
|
self::IMAP => 'acc_imap_',
|
||||||
|
self::SMTP => 'acc_smtp_',
|
||||||
|
self::ADMIN => 'acc_imap_admin_',
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to global db object
|
||||||
|
*
|
||||||
|
* @var Api\Db
|
||||||
|
*/
|
||||||
|
static protected $db;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mcrypt instance initialised with system specific key
|
||||||
|
*
|
||||||
|
* @var ressource
|
||||||
|
*/
|
||||||
|
static protected $system_mcrypt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mcrypt instance initialised with user password from session
|
||||||
|
*
|
||||||
|
* @var ressource
|
||||||
|
*/
|
||||||
|
static protected $user_mcrypt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache for credentials to minimize database access
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $cache = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read credentials for a given mail account
|
||||||
|
*
|
||||||
|
* @param int $acc_id
|
||||||
|
* @param int $type =null default return all credentials
|
||||||
|
* @param int|array $account_id =null default use current user or all (in that order)
|
||||||
|
* @return array with values for (imap|smtp|admin)_(username|password|cred_id)
|
||||||
|
*/
|
||||||
|
public static function read($acc_id, $type=null, $account_id=null)
|
||||||
|
{
|
||||||
|
if (is_null($type)) $type = self::ALL;
|
||||||
|
if (is_null($account_id))
|
||||||
|
{
|
||||||
|
$account_id = array(0, $GLOBALS['egw_info']['user']['account_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check cache, if nothing found, query database
|
||||||
|
// check assumes always same accounts (eg. 0=all plus own account_id) are asked
|
||||||
|
if (!isset(self::$cache[$acc_id]) ||
|
||||||
|
!($rows = array_intersect_key(self::$cache[$acc_id], array_flip((array)$account_id))))
|
||||||
|
{
|
||||||
|
$rows = self::$db->select(self::TABLE, '*', array(
|
||||||
|
'acc_id' => $acc_id,
|
||||||
|
'account_id' => $account_id,
|
||||||
|
'(cred_type & '.(int)$type.') > 0', // postgreSQL require > 0, or gives error as it expects boolean
|
||||||
|
), __LINE__, __FILE__, false,
|
||||||
|
// account_id DESC ensures 0=all allways overwrite (old user-specific credentials)
|
||||||
|
'ORDER BY account_id ASC', self::APP);
|
||||||
|
//error_log(__METHOD__."($acc_id, $type, ".array2string($account_id).") nothing in cache");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ksort($rows); // ORDER BY account_id ASC
|
||||||
|
|
||||||
|
// flatten account_id => cred_type => row array again, to have format like from database
|
||||||
|
$rows = call_user_func_array('array_merge', $rows);
|
||||||
|
//error_log(__METHOD__."($acc_id, $type, ".array2string($account_id).") read from cache ".array2string($rows));
|
||||||
|
}
|
||||||
|
$results = array();
|
||||||
|
foreach($rows as $row)
|
||||||
|
{
|
||||||
|
// update cache (only if we have database-iterator and all credentials asked!)
|
||||||
|
if (!is_array($rows) && $type == self::ALL)
|
||||||
|
{
|
||||||
|
self::$cache[$acc_id][$row['account_id']][$row['cred_type']] = $row;
|
||||||
|
//error_log(__METHOD__."($acc_id, $type, ".array2string($account_id).") stored to cache ".array2string($row));
|
||||||
|
}
|
||||||
|
$password = self::decrypt($row);
|
||||||
|
|
||||||
|
foreach(self::$type2prefix as $pattern => $prefix)
|
||||||
|
{
|
||||||
|
if ($row['cred_type'] & $pattern)
|
||||||
|
{
|
||||||
|
$results[$prefix.'username'] = $row['cred_username'];
|
||||||
|
$results[$prefix.'password'] = $password;
|
||||||
|
$results[$prefix.'cred_id'] = $row['cred_id'];
|
||||||
|
$results[$prefix.'account_id'] = $row['account_id'];
|
||||||
|
$results[$prefix.'pw_enc'] = $row['cred_pw_enc'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate username according to acc_imap_logintype and fetch password from session
|
||||||
|
*
|
||||||
|
* @param array $data values for acc_imap_logintype and acc_domain
|
||||||
|
* @param boolean $set_identity =true true: also set identity values realname&email, if not yet set
|
||||||
|
* @return array with values for keys 'acc_(imap|smtp)_(username|password|cred_id)'
|
||||||
|
*/
|
||||||
|
public static function from_session(array $data, $set_identity=true)
|
||||||
|
{
|
||||||
|
switch($data['acc_imap_logintype'])
|
||||||
|
{
|
||||||
|
case 'standard':
|
||||||
|
$username = $GLOBALS['egw_info']['user']['account_lid'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'vmailmgr':
|
||||||
|
$username = $GLOBALS['egw_info']['user']['account_lid'].'@'.$data['acc_domain'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'email':
|
||||||
|
$username = $GLOBALS['egw_info']['user']['account_email'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'uidNumber':
|
||||||
|
$username = 'u'.$GLOBALS['egw_info']['user']['account_id'].'@'.$data['acc_domain'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'admin':
|
||||||
|
// data should have been stored in credentials table
|
||||||
|
throw new Api\Exception\AssertionFailed('data[acc_imap_logintype]=admin and no stored username/password for data[acc_id]='.$data['acc_id'].'!');
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new Api\Exception\WrongParameter("Unknown data[acc_imap_logintype]=".array2string($data['acc_imap_logintype']).'!');
|
||||||
|
}
|
||||||
|
$password = base64_decode(Api\Cache::getSession('phpgwapi', 'password'));
|
||||||
|
$realname = !$set_identity || $data['ident_realname'] ? $data['ident_realname'] :
|
||||||
|
$GLOBALS['egw_info']['user']['account_fullname'];
|
||||||
|
$email = !$set_identity || $data['ident_email'] ? $data['ident_email'] :
|
||||||
|
$GLOBALS['egw_info']['user']['account_email'];
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'ident_realname' => $realname,
|
||||||
|
'ident_email' => $email,
|
||||||
|
'acc_imap_username' => $username,
|
||||||
|
'acc_imap_password' => $password,
|
||||||
|
'acc_imap_cred_id' => $data['acc_imap_logintype'], // to NOT store it
|
||||||
|
'acc_imap_account_id' => 'c',
|
||||||
|
) + ($data['acc_smtp_auth_session'] ? array(
|
||||||
|
// only set smtp
|
||||||
|
'acc_smtp_username' => $username,
|
||||||
|
'acc_smtp_password' => $password,
|
||||||
|
'acc_smtp_cred_id' => $data['acc_imap_logintype'], // to NOT store it
|
||||||
|
'acc_smtp_account_id' => 'c',
|
||||||
|
) : array());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write and encrypt credentials
|
||||||
|
*
|
||||||
|
* @param int $acc_id id of account
|
||||||
|
* @param string $username
|
||||||
|
* @param string $password cleartext password to write
|
||||||
|
* @param int $type self::IMAP, self::SMTP or self::ADMIN
|
||||||
|
* @param int $account_id if of user-account for whom credentials are
|
||||||
|
* @param int $cred_id =null id of existing credentials to update
|
||||||
|
* @param ressource $mcrypt =null mcrypt ressource for user, default calling self::init_crypt(true)
|
||||||
|
* @return int cred_id
|
||||||
|
*/
|
||||||
|
public static function write($acc_id, $username, $password, $type, $account_id=0, $cred_id=null, $mcrypt=null)
|
||||||
|
{
|
||||||
|
//error_log(__METHOD__."(acc_id=$acc_id, '$username', \$password, type=$type, account_id=$account_id, cred_id=$cred_id)");
|
||||||
|
if (!empty($cred_id) && !is_numeric($cred_id) || !is_numeric($account_id))
|
||||||
|
{
|
||||||
|
//error_log(__METHOD__."($acc_id, '$username', \$password, $type, $account_id, ".array2string($cred_id).") not storing session credentials!");
|
||||||
|
return; // do NOT store credentials from session of current user!
|
||||||
|
}
|
||||||
|
// no need to write empty usernames, but delete existing row
|
||||||
|
if ((string)$username === '')
|
||||||
|
{
|
||||||
|
if ($cred_id) self::$db->delete(self::TABLE, array('cred_id' => $cred_id), __LINE__, __FILE__, self::APP);
|
||||||
|
return; // nothing to save
|
||||||
|
}
|
||||||
|
$pw_enc = self::CLEARTEXT;
|
||||||
|
$data = array(
|
||||||
|
'acc_id' => $acc_id,
|
||||||
|
'account_id' => $account_id,
|
||||||
|
'cred_username' => $username,
|
||||||
|
'cred_password' => (string)$password === '' ? '' :
|
||||||
|
self::encrypt($password, $account_id, $pw_enc, $mcrypt),
|
||||||
|
'cred_type' => $type,
|
||||||
|
'cred_pw_enc' => $pw_enc,
|
||||||
|
);
|
||||||
|
//error_log(__METHOD__."($acc_id, '$username', '$password', $type, $account_id, $cred_id, $mcrypt) storing ".array2string($data).' '.function_backtrace());
|
||||||
|
if ($cred_id > 0)
|
||||||
|
{
|
||||||
|
self::$db->update(self::TABLE, $data, array('cred_id' => $cred_id), __LINE__, __FILE__, self::APP);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self::$db->insert(self::TABLE, $data, array(
|
||||||
|
'acc_id' => $acc_id,
|
||||||
|
'account_id' => $account_id,
|
||||||
|
'cred_type' => $type,
|
||||||
|
), __LINE__, __FILE__, self::APP);
|
||||||
|
$cred_id = self::$db->get_last_insert_id(self::TABLE, 'cred_id');
|
||||||
|
}
|
||||||
|
// invalidate cache
|
||||||
|
unset(self::$cache[$acc_id][$account_id]);
|
||||||
|
|
||||||
|
//error_log(__METHOD__."($acc_id, '$username', \$password, $type, $account_id) returning $cred_id");
|
||||||
|
return $cred_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete credentials from database
|
||||||
|
*
|
||||||
|
* @param int $acc_id
|
||||||
|
* @param int|array $account_id =null
|
||||||
|
* @param int $type =self::ALL self::IMAP, self::SMTP or self::ADMIN
|
||||||
|
* @return int number of rows deleted
|
||||||
|
*/
|
||||||
|
public static function delete($acc_id, $account_id=null, $type=self::ALL)
|
||||||
|
{
|
||||||
|
if (!($acc_id > 0) && !isset($account_id))
|
||||||
|
{
|
||||||
|
throw new Api\Exception\WrongParameter(__METHOD__."() no acc_id AND no account_id parameter!");
|
||||||
|
}
|
||||||
|
$where = array();
|
||||||
|
if ($acc_id > 0) $where['acc_id'] = $acc_id;
|
||||||
|
if (isset($account_id)) $where['account_id'] = $account_id;
|
||||||
|
if ($type != self::ALL) $where[] = '(cred_type & '.(int)$type.') > 0'; // postgreSQL require > 0, or gives error as it expects boolean
|
||||||
|
|
||||||
|
self::$db->delete(self::TABLE, $where, __LINE__, __FILE__, self::APP);
|
||||||
|
|
||||||
|
// invalidate cache: we allways unset everything about an account to simplify cache handling
|
||||||
|
foreach($acc_id > 0 ? (array)$acc_id : array_keys(self::$cache) as $acc_id)
|
||||||
|
{
|
||||||
|
unset(self::$cache[$acc_id]);
|
||||||
|
}
|
||||||
|
$ret = self::$db->affected_rows();
|
||||||
|
//error_log(__METHOD__."($acc_id, ".array2string($account_id).", $type) affected $ret rows");
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt password for storing in database
|
||||||
|
*
|
||||||
|
* @param string $password cleartext password
|
||||||
|
* @param int $account_id user-account password is for
|
||||||
|
* @param int &$pw_enc on return encryption used
|
||||||
|
* @param ressource $mcrypt =null mcrypt ressource for user, default calling self::init_crypt(true)
|
||||||
|
* @return string encrypted password
|
||||||
|
*/
|
||||||
|
protected static function encrypt($password, $account_id, &$pw_enc, $mcrypt=null)
|
||||||
|
{
|
||||||
|
if ($account_id > 0 && $account_id == $GLOBALS['egw_info']['user']['account_id'] &&
|
||||||
|
($mcrypt || ($mcrypt = self::init_crypt(true))))
|
||||||
|
{
|
||||||
|
$pw_enc = self::USER;
|
||||||
|
$password = mcrypt_generic($mcrypt, $password);
|
||||||
|
}
|
||||||
|
elseif (($mcrypt = self::init_crypt(false)))
|
||||||
|
{
|
||||||
|
$pw_enc = self::SYSTEM;
|
||||||
|
$password = mcrypt_generic($mcrypt, $password);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$pw_enc = self::CLEARTEXT;
|
||||||
|
}
|
||||||
|
//error_log(__METHOD__."(, $account_id, , $mcrypt) pw_enc=$pw_enc returning ".array2string(base64_encode($password)));
|
||||||
|
return base64_encode($password);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrypt password from database
|
||||||
|
*
|
||||||
|
* @param array $row database row
|
||||||
|
* @param ressource $mcrypt =null mcrypt ressource for user, default calling self::init_crypt(true)
|
||||||
|
*/
|
||||||
|
protected static function decrypt(array $row, $mcrypt=null)
|
||||||
|
{
|
||||||
|
switch ($row['cred_pw_enc'])
|
||||||
|
{
|
||||||
|
case self::CLEARTEXT:
|
||||||
|
return base64_decode($row['cred_password']);
|
||||||
|
|
||||||
|
case self::USER:
|
||||||
|
case self::SYSTEM:
|
||||||
|
if (($row['cred_pw_enc'] != self::USER || !$mcrypt) &&
|
||||||
|
!($mcrypt = self::init_crypt($row['cred_pw_enc'] == self::USER)))
|
||||||
|
{
|
||||||
|
throw new Api\Exception\WrongParameter("Password encryption type $row[cred_pw_enc] NOT available for mail account #$row[acc_id] and user #$row[account_id]/$row[cred_username]!");
|
||||||
|
}
|
||||||
|
return !empty($row['cred_password']) ? trim(mdecrypt_generic($mcrypt, base64_decode($row['cred_password']))) : '';
|
||||||
|
}
|
||||||
|
throw new Api\Exception\WrongParameter("Unknow password encryption type $row[cred_pw_enc]!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook called when user changes his password, to re-encode his credentials with his new password
|
||||||
|
*
|
||||||
|
* It also changes all user credentials encoded with system password!
|
||||||
|
*
|
||||||
|
* It only changes credentials from user-editable accounts, as user probably
|
||||||
|
* does NOT know password set by admin!
|
||||||
|
*
|
||||||
|
* @param array $data values for keys 'old_passwd', 'new_passwd', 'account_id'
|
||||||
|
*/
|
||||||
|
static public function changepassword(array $data)
|
||||||
|
{
|
||||||
|
if (empty($data['old_passwd'])) return;
|
||||||
|
|
||||||
|
$old_mcrypt = null;
|
||||||
|
foreach(self::$db->select(self::TABLE, self::TABLE.'.*', array(
|
||||||
|
'account_id' => $data['account_id']
|
||||||
|
),__LINE__, __FILE__, false, '', 'emailadmin', 0, self::USER_EDITABLE_JOIN.self::$db->quote(true, 'bool')) as $row)
|
||||||
|
{
|
||||||
|
if (!isset($old_mcrypt))
|
||||||
|
{
|
||||||
|
$old_mcrypt = self::init_crypt($data['old_passwd']);
|
||||||
|
$new_mcrypt = self::init_crypt($data['new_passwd']);
|
||||||
|
if (!$old_mcrypt && !$new_mcrypt) return;
|
||||||
|
}
|
||||||
|
$password = self::decrypt($row, $old_mcrypt);
|
||||||
|
|
||||||
|
self::write($row['acc_id'], $row['cred_username'], $password, $row['cred_type'],
|
||||||
|
$row['account_id'], $row['cred_id'], $new_mcrypt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if session encryption is configured, possible and initialise it
|
||||||
|
*
|
||||||
|
* @param boolean|string $user =false true: use user-password from session,
|
||||||
|
* false: database password or string with password to use
|
||||||
|
* @param string $algo ='tripledes'
|
||||||
|
* @param string $mode ='ecb'
|
||||||
|
* @return ressource|boolean mcrypt ressource to use or false if not available
|
||||||
|
*/
|
||||||
|
static public function init_crypt($user=false, $algo='tripledes',$mode='ecb')
|
||||||
|
{
|
||||||
|
if (is_string($user))
|
||||||
|
{
|
||||||
|
// do NOT use/set/change static object
|
||||||
|
}
|
||||||
|
elseif ($user)
|
||||||
|
{
|
||||||
|
$mcrypt =& self::$user_mcrypt;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$mcrypt =& self::$system_mcrypt;
|
||||||
|
}
|
||||||
|
if (!isset($mcrypt))
|
||||||
|
{
|
||||||
|
if (is_string($user))
|
||||||
|
{
|
||||||
|
$key = $user;
|
||||||
|
}
|
||||||
|
elseif ($user)
|
||||||
|
{
|
||||||
|
$session_key = Api\Cache::getSession('phpgwapi', 'password');
|
||||||
|
if (empty($session_key))
|
||||||
|
{
|
||||||
|
error_log(__METHOD__."() no session password available!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$key = base64_decode($session_key);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$key = self::$db->Password;
|
||||||
|
}
|
||||||
|
if (!check_load_extension('mcrypt'))
|
||||||
|
{
|
||||||
|
error_log(__METHOD__."() required PHP extension mcrypt not loaded and can not be loaded, passwords can be NOT encrypted!");
|
||||||
|
$mcrypt = false;
|
||||||
|
}
|
||||||
|
elseif (!($mcrypt = mcrypt_module_open($algo, '', $mode, '')))
|
||||||
|
{
|
||||||
|
error_log(__METHOD__."() could not mcrypt_module_open(algo='$algo','',mode='$mode',''), passwords can be NOT encrypted!");
|
||||||
|
$mcrypt = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$iv_size = mcrypt_enc_get_iv_size($mcrypt);
|
||||||
|
$iv = !isset($GLOBALS['egw_info']['server']['mcrypt_iv']) || strlen($GLOBALS['egw_info']['server']['mcrypt_iv']) < $iv_size ?
|
||||||
|
mcrypt_create_iv ($iv_size, MCRYPT_RAND) : substr($GLOBALS['egw_info']['server']['mcrypt_iv'],0,$iv_size);
|
||||||
|
|
||||||
|
$key_size = mcrypt_enc_get_key_size($mcrypt);
|
||||||
|
if (bytes($key) > $key_size) $key = cut_bytes($key,0,$key_size-1);
|
||||||
|
|
||||||
|
if (mcrypt_generic_init($mcrypt, $key, $iv) < 0)
|
||||||
|
{
|
||||||
|
error_log(__METHOD__."() could not initialise mcrypt, passwords can be NOT encrypted!");
|
||||||
|
$mcrypt = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//error_log(__METHOD__."(".array2string($user).") key=".array2string($key)." returning ".array2string($mcrypt));
|
||||||
|
return $mcrypt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init our static properties
|
||||||
|
*/
|
||||||
|
static public function init_static()
|
||||||
|
{
|
||||||
|
self::$db = isset($GLOBALS['egw_setup']) ? $GLOBALS['egw_setup']->db : $GLOBALS['egw']->db;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Credentials::init_static();
|
1388
api/src/Mail/Imap.php
Normal file
1388
api/src/Mail/Imap.php
Normal file
File diff suppressed because it is too large
Load Diff
233
api/src/Mail/Imap/Cyrus.php
Normal file
233
api/src/Mail/Imap/Cyrus.php
Normal file
@ -0,0 +1,233 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Support for Cyrus IMAP
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
|
* @author Klaus Leithoff <kl@stylite.de>
|
||||||
|
* @author Lars Kneschke
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Imap;
|
||||||
|
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
use Horde_Imap_Client_Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manages connection to Cyrus IMAP server
|
||||||
|
*/
|
||||||
|
class Cyrus extends Mail\Imap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Label shown in EMailAdmin
|
||||||
|
*/
|
||||||
|
const DESCRIPTION = 'Cyrus';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, sieve, admin, logintypeemail
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|sieve|timedsieve|admin|logintypeemail';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* prefix for groupnames, when using groups in ACL Management
|
||||||
|
*/
|
||||||
|
const ACL_GROUP_PREFIX = 'group:';
|
||||||
|
|
||||||
|
// mailbox delimiter
|
||||||
|
var $mailboxDelimiter = '.';
|
||||||
|
|
||||||
|
// mailbox prefix
|
||||||
|
var $mailboxPrefix = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates an account
|
||||||
|
*
|
||||||
|
* @param array $_hookValues only value for key 'account_lid' and 'account_passwd' is used
|
||||||
|
*/
|
||||||
|
function addAccount($_hookValues)
|
||||||
|
{
|
||||||
|
return $this->updateAccount($_hookValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete an account
|
||||||
|
*
|
||||||
|
* @param array $_hookValues only value for key 'account_lid' is used
|
||||||
|
*/
|
||||||
|
function deleteAccount($_hookValues)
|
||||||
|
{
|
||||||
|
// some precausion to really delete just _one_ account
|
||||||
|
if (strpos($_hookValues['account_lid'],'%') !== false ||
|
||||||
|
strpos($_hookValues['account_lid'],'*') !== false)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return !!$this->deleteUsers($_hookValues['account_lid']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete multiple (user-)mailboxes via a wildcard, eg. '%' for whole domain
|
||||||
|
*
|
||||||
|
* Domain is the configured domain and it uses the Cyrus admin user
|
||||||
|
*
|
||||||
|
* @return string $username='%' username containing wildcards, default '%' for all users of a domain
|
||||||
|
* @return int|boolean number of deleted mailboxes on success or false on error
|
||||||
|
*/
|
||||||
|
function deleteUsers($username='%')
|
||||||
|
{
|
||||||
|
if(!$this->acc_imap_administration || empty($username))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// we need a admin connection
|
||||||
|
$this->adminConnection();
|
||||||
|
|
||||||
|
$mailboxName = $this->getUserMailboxString($username);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$mboxes = (array)$this->getMailboxes($mailboxName, 1);
|
||||||
|
//error_log(__METHOD__."('$username') getMailboxes('$reference','$username$restriction') = ".array2string($mboxes));
|
||||||
|
|
||||||
|
foreach(array_keys($mboxes) as $mbox)
|
||||||
|
{
|
||||||
|
// give the admin account the rights to delete this mailbox
|
||||||
|
$this->setACL($mbox, $this->acc_imap_admin_username, array('rights' => 'aeiklprstwx'));
|
||||||
|
$this->deleteMailbox($mbox);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Horde_Imap_Client_Exception $e) {
|
||||||
|
_egw_log_exception($e);
|
||||||
|
$this->disconnect();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$this->disconnect();
|
||||||
|
|
||||||
|
return count($mboxes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns information about a user
|
||||||
|
* currently only supported information is the current quota
|
||||||
|
*
|
||||||
|
* @param string $_username
|
||||||
|
* @return array userdata
|
||||||
|
*/
|
||||||
|
function getUserData($_username)
|
||||||
|
{
|
||||||
|
// no need to switch to admin-connection for reading quota of current user
|
||||||
|
if ($_username !== $GLOBALS['egw_info']['user']['account_lid']) $this->adminConnection();
|
||||||
|
$userData = array();
|
||||||
|
|
||||||
|
if(($quota = $this->getQuotaByUser($_username,'ALL')))
|
||||||
|
{
|
||||||
|
$userData['quotaLimit'] = (int)($quota['limit'] / 1024);
|
||||||
|
$userData['quotaUsed'] = (int)($quota['usage'] / 1024);
|
||||||
|
}
|
||||||
|
//error_log(__LINE__.': '.__METHOD__."('$_username') quota=".array2string($quota).' returning '.array2string($userData));
|
||||||
|
|
||||||
|
if ($_username !== $GLOBALS['egw_info']['user']['account_lid']) $this->disconnect();
|
||||||
|
|
||||||
|
return $userData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set information about a user
|
||||||
|
* currently only supported information is the current quota
|
||||||
|
*
|
||||||
|
* @param string $_username
|
||||||
|
* @param int $_quota
|
||||||
|
*/
|
||||||
|
function setUserData($_username, $_quota)
|
||||||
|
{
|
||||||
|
if(!$this->acc_imap_administration)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// create a admin connection
|
||||||
|
$this->adminConnection();
|
||||||
|
|
||||||
|
$mailboxName = $this->getUserMailboxString($_username);
|
||||||
|
|
||||||
|
$this->setQuota($mailboxName, array('STORAGE' => (int)$_quota > 0 ? (int)$_quota*1024 : -1));
|
||||||
|
|
||||||
|
$this->disconnect();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates an account
|
||||||
|
*
|
||||||
|
* @param array $_hookValues only value for key 'account_lid' and 'account_passwd' is used
|
||||||
|
*/
|
||||||
|
function updateAccount($_hookValues)
|
||||||
|
{
|
||||||
|
if(!$this->acc_imap_administration)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// we need a admin connection
|
||||||
|
$this->adminConnection();
|
||||||
|
|
||||||
|
// create the mailbox, with the account_lid, as it is passed from the hook values (gets transformed there if needed)
|
||||||
|
$mailboxName = $this->getUserMailboxString($_hookValues['account_lid'], $mailboxName);
|
||||||
|
// make sure we use the correct username here.
|
||||||
|
$username = $this->getMailBoxUserName($_hookValues['account_lid']);
|
||||||
|
$folderInfo = $this->getMailboxes('', $mailboxName, true);
|
||||||
|
if(empty($folderInfo))
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$this->createMailbox($mailboxName);
|
||||||
|
$this->setACL($mailboxName, $username, array('rights' => 'aeiklprstwx'));
|
||||||
|
// create defined folders and subscribe them (have to use user-credentials to subscribe!)
|
||||||
|
$userimap = null;
|
||||||
|
foreach($this->params as $name => $value)
|
||||||
|
{
|
||||||
|
if (substr($name, 0, 11) == 'acc_folder_' && !empty($value))
|
||||||
|
{
|
||||||
|
if (!isset($userimap))
|
||||||
|
{
|
||||||
|
$params = $this->params;
|
||||||
|
$params['acc_imap_username'] = $username;
|
||||||
|
$params['acc_imap_password'] = $_hookValues['account_passwd'];
|
||||||
|
$userimap = new Cyrus($params);
|
||||||
|
}
|
||||||
|
$userimap->createMailbox($value);
|
||||||
|
$userimap->subscribeMailbox($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isset($userimap)) $userimap->logout();
|
||||||
|
}
|
||||||
|
catch(Horde_Imap_Client_Exception $e) {
|
||||||
|
_egw_log_exception($e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->disconnect();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Proxy former bosieve methods to internal Mail\Sieve instance
|
||||||
|
*
|
||||||
|
* @param string $name
|
||||||
|
* @param array $params
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function __call($name,array $params=null)
|
||||||
|
{
|
||||||
|
switch($name)
|
||||||
|
{
|
||||||
|
case 'setRules': // call setRules with 3. param of true, to enable utf7imap fileinto for Cyrus
|
||||||
|
$params += array(null, null, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return parent::__call($name, $params);
|
||||||
|
}
|
||||||
|
}
|
160
api/src/Mail/Imap/Dbmailqmailuser.php
Normal file
160
api/src/Mail/Imap/Dbmailqmailuser.php
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Support for DBMail IMAP with qmailUser LDAP schema
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
|
* @author Klaus Leithoff <kl@stylite.de>
|
||||||
|
* @author Lars Kneschke
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Imap;
|
||||||
|
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
use EGroupware\Api\Ldap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Support for DBMail IMAP with qmailUser LDAP schema
|
||||||
|
*
|
||||||
|
* @todo base this class on dbmaildbmailuser or the other way around
|
||||||
|
*/
|
||||||
|
class Dbmailqmailuser extends Mail\Imap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Label shown in EMailAdmin
|
||||||
|
*/
|
||||||
|
const DESCRIPTION = 'dbmail (qmailUser Schema)';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, sieve, admin, logintypeemail
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|sieve';
|
||||||
|
|
||||||
|
function addAccount($_hookValues)
|
||||||
|
{
|
||||||
|
return $this->updateAccount($_hookValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
#function deleteAccount($_hookValues) {
|
||||||
|
#}
|
||||||
|
function getUserData($_username)
|
||||||
|
{
|
||||||
|
$userData = array();
|
||||||
|
|
||||||
|
$ds = Ldap::factory();
|
||||||
|
|
||||||
|
if(!is_resource($ds)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filter = '(&(objectclass=posixaccount)(uid='. $_username .')(qmailGID='. sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id'])) .'))';
|
||||||
|
$justthese = array('dn', 'objectclass', 'mailQuota');
|
||||||
|
if(($sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese))) {
|
||||||
|
|
||||||
|
if(($info = ldap_get_entries($ds, $sri))) {
|
||||||
|
if(isset($info[0]['mailquota'][0])) {
|
||||||
|
$userData['quotaLimit'] = $info[0]['mailquota'][0] / 1048576;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $userData;
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateAccount($_hookValues) {
|
||||||
|
if(!$uidnumber = (int)$_hookValues['account_id']) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$ds = Ldap::factory();
|
||||||
|
|
||||||
|
if(!is_resource($ds)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filter = '(&(objectclass=posixaccount)(uidnumber='. $uidnumber .'))';
|
||||||
|
$justthese = array('dn', 'objectclass', 'qmailUID', 'qmailGID', 'mail');
|
||||||
|
$sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese);
|
||||||
|
|
||||||
|
if(($info = ldap_get_entries($ds, $sri))) {
|
||||||
|
if(!in_array('qmailuser',$info[0]['objectclass']) && $info[0]['email']) {
|
||||||
|
$newData['objectclass'] = $info[0]['objectclass'];
|
||||||
|
unset($newData['objectclass']['count']);
|
||||||
|
$newData['objectclass'][] = 'qmailuser';
|
||||||
|
sort($newData['objectclass']);
|
||||||
|
$newData['qmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
|
||||||
|
#$newData['qmailUID'] = (!empty($this->domainName)) ? $_username .'@'. $this->domainName : $_username;
|
||||||
|
|
||||||
|
ldap_modify($ds, $info[0]['dn'], $newData);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
$newData = array();
|
||||||
|
$newData['qmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
|
||||||
|
#$newData['qmailUID'] = (!empty($this->domainName)) ? $_username .'@'. $this->domainName : $_username;
|
||||||
|
|
||||||
|
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
|
||||||
|
#print ldap_error($ds);
|
||||||
|
#return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setUserData($_username, $_quota) {
|
||||||
|
$ds = Ldap::factory();
|
||||||
|
|
||||||
|
if(!is_resource($ds)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filter = '(&(objectclass=posixaccount)(uid='. $_username .'))';
|
||||||
|
$justthese = array('dn', 'objectclass', 'qmailGID', 'mail');
|
||||||
|
$sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese);
|
||||||
|
|
||||||
|
if(($info = ldap_get_entries($ds, $sri))) {
|
||||||
|
#_debug_array($info);
|
||||||
|
if(!in_array('qmailuser',$info[0]['objectclass']) && $info[0]['email']) {
|
||||||
|
$newData['objectclass'] = $info[0]['objectclass'];
|
||||||
|
unset($newData['objectclass']['count']);
|
||||||
|
$newData['objectclass'][] = 'qmailuser';
|
||||||
|
sort($newData['objectclass']);
|
||||||
|
$newData['qmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
|
||||||
|
|
||||||
|
ldap_modify($ds, $info[0]['dn'], $newData);
|
||||||
|
} else {
|
||||||
|
if (in_array('qmailuser',$info[0]['objectclass']) && !$info[0]['qmailgid']) {
|
||||||
|
$newData = array();
|
||||||
|
$newData['qmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
|
||||||
|
|
||||||
|
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
|
||||||
|
#print ldap_error($ds);
|
||||||
|
#return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$newData = array();
|
||||||
|
|
||||||
|
if((int)$_quota >= 0) {
|
||||||
|
$newData['mailQuota'] = (int)$_quota * 1048576;
|
||||||
|
} else {
|
||||||
|
$newData['mailQuota'] = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
|
||||||
|
#print ldap_error($ds);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
183
api/src/Mail/Imap/Dbmailuser.php
Executable file
183
api/src/Mail/Imap/Dbmailuser.php
Executable file
@ -0,0 +1,183 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Support for DBMail IMAP with dbmailUser LDAP schema
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
|
* @author Klaus Leithoff <kl@stylite.de>
|
||||||
|
* @author Lars Kneschke
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Imap;
|
||||||
|
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
use EGroupware\Api\Ldap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Support for DBMail IMAP with qmailUser LDAP schema
|
||||||
|
*
|
||||||
|
* @todo base this class on dbmailqmailuser or the other way around
|
||||||
|
*/
|
||||||
|
class Dbmailuser extends Mail\Imap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Label shown in EMailAdmin
|
||||||
|
*/
|
||||||
|
const DESCRIPTION = 'dbmail (dbmailUser Schema)';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, sieve, admin, logintypeemail
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|sieve';
|
||||||
|
|
||||||
|
function addAccount($_hookValues)
|
||||||
|
{
|
||||||
|
return $this->updateAccount($_hookValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
#function deleteAccount($_hookValues) {
|
||||||
|
#}
|
||||||
|
function getUserData($_username)
|
||||||
|
{
|
||||||
|
$userData = array();
|
||||||
|
|
||||||
|
$ds = Ldap::factory();
|
||||||
|
|
||||||
|
if(!is_resource($ds)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filter = '(&(objectclass=posixaccount)(uid='. $_username .')(dbmailGID='. sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id'])) .'))';
|
||||||
|
$justthese = array('dn', 'objectclass', 'mailQuota');
|
||||||
|
if(($sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese))) {
|
||||||
|
|
||||||
|
if(($info = ldap_get_entries($ds, $sri))) {
|
||||||
|
if(isset($info[0]['mailquota'][0])) {
|
||||||
|
$userData['quotaLimit'] = $info[0]['mailquota'][0] / 1048576;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $userData;
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateAccount($_hookValues)
|
||||||
|
{
|
||||||
|
if(!$uidnumber = (int)$_hookValues['account_id']) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$ds = Ldap::factory();
|
||||||
|
|
||||||
|
if(!is_resource($ds)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filter = '(&(objectclass=posixaccount)(uidnumber='. $uidnumber .'))';
|
||||||
|
$justthese = array('dn', 'objectclass', 'dbmailUID', 'dbmailGID', 'mail');
|
||||||
|
$sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese);
|
||||||
|
|
||||||
|
if(($info = ldap_get_entries($ds, $sri))) {
|
||||||
|
if((!in_array('dbmailuser',$info[0]['objectclass']) && !in_array('dbmailUser',$info[0]['objectclass'])) && $info[0]['mail']) {
|
||||||
|
$newData['objectclass'] = $info[0]['objectclass'];
|
||||||
|
unset($newData['objectclass']['count']);
|
||||||
|
$newData['objectclass'][] = 'dbmailuser';
|
||||||
|
sort($newData['objectclass']);
|
||||||
|
$newData['dbmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
|
||||||
|
$newData['dbmailUID'] = (!empty($this->domainName)) ? $_hookValues['account_lid'] .'@'. $this->domainName : $_hookValues['account_lid'];
|
||||||
|
|
||||||
|
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
|
||||||
|
#print ldap_error($ds);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
$newData = array();
|
||||||
|
$newData['dbmailUID'] = (!empty($this->domainName)) ? $_hookValues['account_lid'] .'@'. $this->domainName : $_hookValues['account_lid'];
|
||||||
|
$newData['dbmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
|
||||||
|
|
||||||
|
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
|
||||||
|
print ldap_error($ds);
|
||||||
|
_debug_array($newData);
|
||||||
|
exit;
|
||||||
|
#return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setUserData($_username, $_quota)
|
||||||
|
{
|
||||||
|
$ds = Ldap::factory();
|
||||||
|
|
||||||
|
if(!is_resource($ds)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filter = '(&(objectclass=posixaccount)(uid='. $_username .'))';
|
||||||
|
$justthese = array('dn', 'objectclass', 'dbmailGID', 'dbmailUID', 'mail');
|
||||||
|
$sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese);
|
||||||
|
|
||||||
|
if(($info = ldap_get_entries($ds, $sri))) {
|
||||||
|
$validLDAPConfig = false;
|
||||||
|
if(in_array('dbmailuser',$info[0]['objectclass']) || in_array('dbmailUser',$info[0]['objectclass'])) {
|
||||||
|
$validLDAPConfig = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!in_array('dbmailuser',$info[0]['objectclass']) && !in_array('dbmailUser',$info[0]['objectclass']) && $info[0]['mail']) {
|
||||||
|
$newData['objectclass'] = $info[0]['objectclass'];
|
||||||
|
unset($newData['objectclass']['count']);
|
||||||
|
$newData['objectclass'][] = 'dbmailUser';
|
||||||
|
sort($newData['objectclass']);
|
||||||
|
$newData['dbmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
|
||||||
|
$newData['dbmailUID'] = (!empty($this->domainName)) ? $_username .'@'. $this->domainName : $_username;
|
||||||
|
|
||||||
|
if(ldap_modify($ds, $info[0]['dn'], $newData)) {
|
||||||
|
$validLDAPConfig = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ((in_array('dbmailuser',$info[0]['objectclass']) || in_array('dbmailUser',$info[0]['objectclass'])) && !$info[0]['dbmailuid']) {
|
||||||
|
$newData = array();
|
||||||
|
$newData['dbmailUID'] = (!empty($this->domainName)) ? $_username .'@'. $this->domainName : $_username;
|
||||||
|
|
||||||
|
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
|
||||||
|
#print ldap_error($ds);
|
||||||
|
#return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((in_array('dbmailuser',$info[0]['objectclass']) || in_array('dbmailUser',$info[0]['objectclass'])) && !$info[0]['dbmailgid']) {
|
||||||
|
$newData = array();
|
||||||
|
$newData['dbmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
|
||||||
|
|
||||||
|
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
|
||||||
|
#print ldap_error($ds);
|
||||||
|
#return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($validLDAPConfig) {
|
||||||
|
$newData = array();
|
||||||
|
|
||||||
|
if((int)$_quota >= 0) {
|
||||||
|
$newData['mailQuota'] = (int)$_quota * 1048576;
|
||||||
|
} else {
|
||||||
|
$newData['mailQuota'] = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
|
||||||
|
#print ldap_error($ds);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
284
api/src/Mail/Imap/Dovecot.php
Normal file
284
api/src/Mail/Imap/Dovecot.php
Normal file
@ -0,0 +1,284 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Support for Dovecot IMAP
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Imap;
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manages connection to Dovecot IMAP server
|
||||||
|
*
|
||||||
|
* Basic differences to cyrusimap:
|
||||||
|
* - no real admin user, but master user, whos password can be used to connect instead of real user
|
||||||
|
* - mailboxes have to be deleted in filesystem (no IMAP command for that)
|
||||||
|
* --> require by webserver writable user_home to be configured, otherwise deleting get ignored like with defaultimap
|
||||||
|
* - quota can be read, but not set
|
||||||
|
*/
|
||||||
|
class Dovecot extends Mail\Imap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Label shown in EMailAdmin
|
||||||
|
*/
|
||||||
|
const DESCRIPTION = 'Dovecot';
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, sieve, admin, logintypeemail
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|sieve|timedsieve|admin|logintypeemail';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* prefix for groupnames, when using groups in ACL Management
|
||||||
|
*/
|
||||||
|
const ACL_GROUP_PREFIX = '$';
|
||||||
|
|
||||||
|
// mailbox delimiter
|
||||||
|
var $mailboxDelimiter = '.';
|
||||||
|
|
||||||
|
// mailbox prefix
|
||||||
|
var $mailboxPrefix = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To enable deleting of a mailbox user_home has to be set and be writable by webserver
|
||||||
|
*
|
||||||
|
* Supported placeholders are:
|
||||||
|
* - %d domain
|
||||||
|
* - %u username part of email
|
||||||
|
* - %s email address
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
var $user_home; // = '/var/dovecot/imap/%d/%u';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure we use an admin connection
|
||||||
|
*
|
||||||
|
* Prefixes adminUsername with real username (separated by an asterisk)
|
||||||
|
*
|
||||||
|
* @param string $_username =true create an admin connection for given user or $this->acc_imap_username
|
||||||
|
*/
|
||||||
|
function adminConnection($_username=true)
|
||||||
|
{
|
||||||
|
// generate admin user name of $username
|
||||||
|
if (($pos = strpos($this->acc_imap_admin_username, '*')) !== false) // remove evtl. set username
|
||||||
|
{
|
||||||
|
$this->params['acc_imap_admin_username'] = substr($this->acc_imap_admin_username, $pos+1);
|
||||||
|
}
|
||||||
|
$this->params['acc_imap_admin_username'] = (is_string($_username) ? $_username : $this->acc_imap_username).
|
||||||
|
'*'.$this->acc_imap_admin_username;
|
||||||
|
|
||||||
|
parent::adminConnection($_username);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create mailbox string from given mailbox-name and user-name
|
||||||
|
*
|
||||||
|
* Admin connection in Dovecot is always for a given user, we can simply use INBOX here.
|
||||||
|
*
|
||||||
|
* @param string $_username
|
||||||
|
* @param string $_folderName =''
|
||||||
|
* @return string utf-7 encoded (done in getMailboxName)
|
||||||
|
*/
|
||||||
|
function getUserMailboxString($_username, $_folderName='')
|
||||||
|
{
|
||||||
|
unset($_username); // not used, but required by function signature
|
||||||
|
|
||||||
|
$mailboxString = 'INBOX';
|
||||||
|
|
||||||
|
if (!empty($_folderName))
|
||||||
|
{
|
||||||
|
$nameSpaces = $this->getNameSpaceArray();
|
||||||
|
$mailboxString .= $nameSpaces['others'][0]['delimiter'] . $_folderName;
|
||||||
|
}
|
||||||
|
return $mailboxString;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates an account
|
||||||
|
*
|
||||||
|
* @param array $_hookValues only value for key 'account_lid' and 'new_passwd' is used
|
||||||
|
*/
|
||||||
|
function addAccount($_hookValues)
|
||||||
|
{
|
||||||
|
return $this->updateAccount($_hookValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete an account
|
||||||
|
*
|
||||||
|
* @param array $_hookValues only value for key 'account_lid' is used
|
||||||
|
*/
|
||||||
|
function deleteAccount($_hookValues)
|
||||||
|
{
|
||||||
|
// some precausion to really delete just _one_ account
|
||||||
|
if (strpos($_hookValues['account_lid'],'%') !== false ||
|
||||||
|
strpos($_hookValues['account_lid'],'*') !== false)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return !!$this->deleteUsers($_hookValues['account_lid']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete multiple (user-)mailboxes via a wildcard, eg. '%' for whole domain
|
||||||
|
*
|
||||||
|
* Domain is the configured domain and it uses the Cyrus admin user
|
||||||
|
*
|
||||||
|
* @return string $username='%' username containing wildcards, default '%' for all users of a domain
|
||||||
|
* @return int|boolean number of deleted mailboxes on success or false on error
|
||||||
|
*/
|
||||||
|
function deleteUsers($username='%')
|
||||||
|
{
|
||||||
|
if(!$this->acc_imap_administration || empty($username))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// dovecot can not delete mailbox, they need to be physically deleted in filesystem (webserver needs write-rights to do so!)
|
||||||
|
if (empty($this->user_home))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$replace = array('%d' => $this->domainName, '%u' => $username, '%s' => $username.'@'.$this->domainName);
|
||||||
|
|
||||||
|
if ($username == '%')
|
||||||
|
{
|
||||||
|
if (($pos = strpos($this->user_home, '%d')) === false)
|
||||||
|
{
|
||||||
|
throw new Api\Exception\AssertionFailed("user_home='$this->user_home' contains no domain-part '%d'!");
|
||||||
|
}
|
||||||
|
$home = strtr(substr($this->user_home, 0, $pos+2), $replace);
|
||||||
|
|
||||||
|
$ret = count(scandir($home))-2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$home = strtr($this->user_home, $replace);
|
||||||
|
|
||||||
|
$ret = 1;
|
||||||
|
}
|
||||||
|
if (!is_writable(dirname($home)) || !self::_rm_recursive($home))
|
||||||
|
{
|
||||||
|
error_log(__METHOD__."('$username') Failed to delete $home!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recursively delete a directory (or file)
|
||||||
|
*
|
||||||
|
* @param string $path
|
||||||
|
* @return boolean true on success, false on failure
|
||||||
|
*/
|
||||||
|
private function _rm_recursive($path)
|
||||||
|
{
|
||||||
|
if (is_dir($path))
|
||||||
|
{
|
||||||
|
foreach(scandir($path) as $file)
|
||||||
|
{
|
||||||
|
if ($file == '.' || $file == '..') continue;
|
||||||
|
|
||||||
|
if (is_dir($path))
|
||||||
|
{
|
||||||
|
self::_rm_recursive($path.'/'.$file);
|
||||||
|
}
|
||||||
|
elseif (!unlink($path.'/'.$file))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!rmdir($path))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif(!unlink($path))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns information about a user
|
||||||
|
* currently only supported information is the current quota
|
||||||
|
*
|
||||||
|
* @param string $_username
|
||||||
|
* @return array userdata
|
||||||
|
*/
|
||||||
|
function getUserData($_username)
|
||||||
|
{
|
||||||
|
if (isset($this->username)) $bufferUsername = $this->username;
|
||||||
|
if (isset($this->loginName)) $bufferLoginName = $this->loginName;
|
||||||
|
$this->username = $this->loginName = $_username;
|
||||||
|
|
||||||
|
// now disconnect to be able to reestablish the connection with the targetUser while we go on
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$this->adminConnection();
|
||||||
|
}
|
||||||
|
catch (\Exception $e)
|
||||||
|
{
|
||||||
|
// error_log(__METHOD__.__LINE__." Could not establish admin Connection!".$e->getMessage());
|
||||||
|
unset($e);
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
$userData = array();
|
||||||
|
// we are authenticated with master but for current user
|
||||||
|
if(($quota = $this->getStorageQuotaRoot('INBOX')))
|
||||||
|
{
|
||||||
|
$userData['quotaLimit'] = (int) ($quota['QMAX'] / 1024);
|
||||||
|
$userData['quotaUsed'] = (int) ($quota['USED'] / 1024);
|
||||||
|
}
|
||||||
|
$this->username = $bufferUsername;
|
||||||
|
$this->loginName = $bufferLoginName;
|
||||||
|
$this->disconnect();
|
||||||
|
|
||||||
|
//error_log(__METHOD__."('$_username') getStorageQuotaRoot('INBOX')=".array2string($quota).' returning '.array2string($userData));
|
||||||
|
return $userData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set information about a user
|
||||||
|
* currently only supported information is the current quota
|
||||||
|
*
|
||||||
|
* Dovecot get's quota from it's user-db, but cant set it --> ignored
|
||||||
|
*
|
||||||
|
* @param string $_username
|
||||||
|
* @param int $_quota
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
function setUserData($_username, $_quota)
|
||||||
|
{
|
||||||
|
unset($_username); unset($_quota); // not used, but required by function signature
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates an account
|
||||||
|
*
|
||||||
|
* @param array $_hookValues only value for key 'account_lid' and 'new_passwd' is used
|
||||||
|
*/
|
||||||
|
function updateAccount($_hookValues)
|
||||||
|
{
|
||||||
|
unset($_hookValues); // not used, but required by function signature
|
||||||
|
|
||||||
|
if(!$this->acc_imap_administration)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// mailbox get's automatic created with full rights for user
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
163
api/src/Mail/Imap/Iface.php
Normal file
163
api/src/Mail/Imap/Iface.php
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Interface for IMAP support
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
|
* @author Stylite AG <info@stylite.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Imap;
|
||||||
|
|
||||||
|
define('IMAP_NAMESPACE_PERSONAL', 'personal');
|
||||||
|
define('IMAP_NAMESPACE_OTHERS' , 'others');
|
||||||
|
define('IMAP_NAMESPACE_SHARED' , 'shared');
|
||||||
|
define('IMAP_NAMESPACE_ALL' , 'all');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class holds all information about the imap connection.
|
||||||
|
* This is the base class for all other imap classes.
|
||||||
|
*
|
||||||
|
* Also proxies Sieve calls to Mail\Sieve (eg. it behaves like the former felamimail bosieve),
|
||||||
|
* to allow IMAP plugins to also manage Sieve connection.
|
||||||
|
*/
|
||||||
|
interface Iface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* adds a account on the imap server
|
||||||
|
*
|
||||||
|
* @param array $_hookValues
|
||||||
|
* @return bool true on success, false on failure
|
||||||
|
*/
|
||||||
|
function addAccount($_hookValues);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* updates a account on the imap server
|
||||||
|
*
|
||||||
|
* @param array $_hookValues
|
||||||
|
* @return bool true on success, false on failure
|
||||||
|
*/
|
||||||
|
function updateAccount($_hookValues);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* deletes a account on the imap server
|
||||||
|
*
|
||||||
|
* @param array $_hookValues
|
||||||
|
* @return bool true on success, false on failure
|
||||||
|
*/
|
||||||
|
function deleteAccount($_hookValues);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* converts a foldername from current system charset to UTF7
|
||||||
|
*
|
||||||
|
* @param string $_folderName
|
||||||
|
* @return string the encoded foldername
|
||||||
|
*/
|
||||||
|
function encodeFolderName($_folderName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the supported capabilities of the imap server
|
||||||
|
* return false if the imap server does not support capabilities
|
||||||
|
*
|
||||||
|
* @return array the supported capabilites
|
||||||
|
*/
|
||||||
|
function getCapabilities();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return the delimiter used by the current imap server
|
||||||
|
*
|
||||||
|
* @return string the delimimiter
|
||||||
|
*/
|
||||||
|
function getDelimiter();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get the effective Username for the Mailbox, as it is depending on the loginType
|
||||||
|
* @param string $_username
|
||||||
|
* @return string the effective username to be used to access the Mailbox
|
||||||
|
*/
|
||||||
|
function getMailBoxUserName($_username);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create mailbox string from given mailbox-name and user-name
|
||||||
|
*
|
||||||
|
* @param string $_folderName=''
|
||||||
|
* @return string utf-7 encoded (done in getMailboxName)
|
||||||
|
*/
|
||||||
|
function getUserMailboxString($_username, $_folderName='');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get list of namespaces
|
||||||
|
*
|
||||||
|
* @return array with keys 'personal', 'shared' and 'others' and value array with values for keys 'name' and 'delimiter'
|
||||||
|
*/
|
||||||
|
function getNameSpaceArray();
|
||||||
|
/**
|
||||||
|
* return the quota for another user
|
||||||
|
* used by admin connections only
|
||||||
|
*
|
||||||
|
* @param string $_username
|
||||||
|
* @param string $_what - what to retrieve either QMAX, USED or ALL is supported
|
||||||
|
* @return mixed the quota for specified user (by what) or array with all available Quota Information, or false
|
||||||
|
*/
|
||||||
|
function getQuotaByUser($_username, $_what='QMAX');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns information about a user
|
||||||
|
*
|
||||||
|
* Only a stub, as admin connection requires, which is only supported for Cyrus
|
||||||
|
*
|
||||||
|
* @param string $_username
|
||||||
|
* @return array userdata
|
||||||
|
*/
|
||||||
|
function getUserData($_username);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* opens a connection to a imap server
|
||||||
|
*
|
||||||
|
* @param bool $_adminConnection create admin connection if true
|
||||||
|
* @param int $_timeout =null timeout in secs, if none given fmail pref or default of 20 is used
|
||||||
|
* @throws Exception on error
|
||||||
|
*/
|
||||||
|
function openConnection($_adminConnection=false, $_timeout=null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set userdata
|
||||||
|
*
|
||||||
|
* @param string $_username username of the user
|
||||||
|
* @param int $_quota quota in bytes
|
||||||
|
* @return bool true on success, false on failure
|
||||||
|
*/
|
||||||
|
function setUserData($_username, $_quota);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check if imap server supports given capability
|
||||||
|
*
|
||||||
|
* @param string $_capability the capability to check for
|
||||||
|
* @return bool true if capability is supported, false if not
|
||||||
|
*/
|
||||||
|
function supportsCapability($_capability);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set vacation message for given user
|
||||||
|
*
|
||||||
|
* @param int|string $_euser nummeric account_id or imap username
|
||||||
|
* @param array $_vacation
|
||||||
|
* @param string $_scriptName =null
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function setVacationUser($_euser, array $_vacation, $_scriptName=null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get vacation message for given user
|
||||||
|
*
|
||||||
|
* @param int|string $_euser nummeric account_id or imap username
|
||||||
|
* @param string $_scriptName =null
|
||||||
|
* @throws Exception on connection error or authentication failure
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getVacationUser($_euser, $_scriptName=null);
|
||||||
|
}
|
183
api/src/Mail/Notifications.php
Normal file
183
api/src/Mail/Notifications.php
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Mail account folders to notify user about arriving mail
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
|
* @author Stylite AG <info@stylite.de>
|
||||||
|
* @copyright (c) 2014-16 by Ralf Becker <rb@stylite.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mail account folders to notify user about arriving mail
|
||||||
|
*/
|
||||||
|
class Notifications
|
||||||
|
{
|
||||||
|
const APP = 'emailadmin';
|
||||||
|
const TABLE = 'egw_ea_notifications';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to global db object
|
||||||
|
*
|
||||||
|
* @var Api\Db
|
||||||
|
*/
|
||||||
|
static protected $db;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache for credentials to minimize database access
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $cache = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read credentials for a given mail account
|
||||||
|
*
|
||||||
|
* @param int $acc_id
|
||||||
|
* @param int|array $account_id =null default use current user or all (in that order)
|
||||||
|
* @param boolean $return_empty_marker =false should we return null
|
||||||
|
* @return array with values for "notify_folders", "notify_use_default"
|
||||||
|
*/
|
||||||
|
public static function read($acc_id, $account_id=null, $return_empty_marker=false)
|
||||||
|
{
|
||||||
|
if (is_null($account_id))
|
||||||
|
{
|
||||||
|
$account_id = array(0, $GLOBALS['egw_info']['user']['account_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check cache, if nothing found, query database
|
||||||
|
// check assumes always same accounts (eg. 0=all plus own account_id) are asked
|
||||||
|
if (!isset(self::$cache[$acc_id]) ||
|
||||||
|
!($rows = array_intersect_key(self::$cache[$acc_id], array_flip((array)$account_id))))
|
||||||
|
{
|
||||||
|
$rows = self::$db->select(self::TABLE, '*', array(
|
||||||
|
'acc_id' => $acc_id,
|
||||||
|
'account_id' => $account_id,
|
||||||
|
), __LINE__, __FILE__, false, '', self::APP);
|
||||||
|
//error_log(__METHOD__."($acc_id, ".array2string($account_id).") nothing in cache");
|
||||||
|
}
|
||||||
|
$account_specific = 0;
|
||||||
|
foreach($rows as $row)
|
||||||
|
{
|
||||||
|
if ($row['account_id'])
|
||||||
|
{
|
||||||
|
$account_specific = $row['account_id'];
|
||||||
|
}
|
||||||
|
// update cache (only if we have database-iterator)
|
||||||
|
if (!is_array($rows))
|
||||||
|
{
|
||||||
|
self::$cache[$acc_id][$row['account_id']][] = $row['notif_folder'];
|
||||||
|
} // make sure set the account_specific correctly when notify_folder gets removed
|
||||||
|
elseif (!$row['account_id'] && !is_array($account_id) && is_array($rows[$account_id]))
|
||||||
|
{
|
||||||
|
$account_specific = $account_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$folders = (array)self::$cache[$acc_id][$account_specific];
|
||||||
|
if (!$return_empty_marker && $folders == array(null)) $folders = array();
|
||||||
|
$result = array(
|
||||||
|
'notify_folders' => $folders,
|
||||||
|
'notify_account_id' => $account_specific,
|
||||||
|
);
|
||||||
|
//error_log(__METHOD__."($acc_id, ".array2string($account_id).") returning ".array2string($result));
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write notification folders
|
||||||
|
*
|
||||||
|
* @param int $acc_id id of account
|
||||||
|
* @param int $account_id if of user-account for whom folders are or 0 for default
|
||||||
|
* @param array $folders folders to store
|
||||||
|
* @return int number of changed rows
|
||||||
|
*/
|
||||||
|
public static function write($acc_id, $account_id, array $folders)
|
||||||
|
{
|
||||||
|
if (!is_numeric($account_id) || !($account_id >= 0))
|
||||||
|
{
|
||||||
|
return 0; // nothing to save, happens eg. in setup
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($account_id && !$folders && ($default = self::read($acc_id, 0)) && $default['notify_folders'])
|
||||||
|
{
|
||||||
|
$folders[] = null; // we need to write a marker, that user wants no notifications!
|
||||||
|
}
|
||||||
|
$old = self::read($acc_id, $account_id, true); // true = return empty marker
|
||||||
|
if ($account_id && !$old['notify_account_id']) $old['notify_folders'] = array(); // ignore returned default
|
||||||
|
|
||||||
|
$changed = 0;
|
||||||
|
// insert newly added ones
|
||||||
|
foreach(array_diff($folders, $old['notify_folders']) as $folder)
|
||||||
|
{
|
||||||
|
self::$db->insert(self::TABLE, array(
|
||||||
|
'acc_id' => $acc_id,
|
||||||
|
'account_id' => $account_id,
|
||||||
|
'notif_folder' => $folder,
|
||||||
|
), false, __LINE__, __FILE__, self::APP);
|
||||||
|
|
||||||
|
$changed += self::$db->affected_rows();
|
||||||
|
}
|
||||||
|
// delete removed ones
|
||||||
|
if (($to_delete = array_diff($old['notify_folders'], $folders)))
|
||||||
|
{
|
||||||
|
self::$db->delete(self::TABLE, array(
|
||||||
|
'acc_id' => $acc_id,
|
||||||
|
'account_id' => $account_id,
|
||||||
|
'notif_folder' => $to_delete,
|
||||||
|
), __LINE__, __FILE__, self::APP);
|
||||||
|
|
||||||
|
$changed += self::$db->affected_rows();
|
||||||
|
}
|
||||||
|
// update cache
|
||||||
|
self::$cache[$acc_id][(int)$account_id] = $folders;
|
||||||
|
|
||||||
|
//error_log(__METHOD__."(acc_id=$acc_id, account_id=".array2string($account_id).", folders=".array2string($folders).") returning $changed");
|
||||||
|
return $changed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete credentials from database
|
||||||
|
*
|
||||||
|
* @param int $acc_id
|
||||||
|
* @param int|array $account_id =null
|
||||||
|
* @return int number of rows deleted
|
||||||
|
*/
|
||||||
|
public static function delete($acc_id, $account_id=null)
|
||||||
|
{
|
||||||
|
if (!($acc_id > 0) && !isset($account_id))
|
||||||
|
{
|
||||||
|
throw new Api\Exception\WrongParameter(__METHOD__."() no acc_id AND no account_id parameter!");
|
||||||
|
}
|
||||||
|
$where = array();
|
||||||
|
if ($acc_id > 0) $where['acc_id'] = $acc_id;
|
||||||
|
if (isset($account_id)) $where['account_id'] = $account_id;
|
||||||
|
|
||||||
|
self::$db->delete(self::TABLE, $where, __LINE__, __FILE__, self::APP);
|
||||||
|
|
||||||
|
// invalidate cache: we allways unset everything about an account to simplify cache handling
|
||||||
|
foreach($acc_id > 0 ? (array)$acc_id : array_keys(self::$cache) as $acc_id)
|
||||||
|
{
|
||||||
|
unset(self::$cache[$acc_id]);
|
||||||
|
}
|
||||||
|
$ret = self::$db->affected_rows();
|
||||||
|
//error_log(__METHOD__."($acc_id, ".array2string($account_id).", $type) affected $ret rows");
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init our static properties
|
||||||
|
*/
|
||||||
|
static public function init_static()
|
||||||
|
{
|
||||||
|
self::$db = isset($GLOBALS['egw_setup']) ? $GLOBALS['egw_setup']->db : $GLOBALS['egw']->db;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Notifications::init_static();
|
619
api/src/Mail/Script.php
Normal file
619
api/src/Mail/Script.php
Normal file
@ -0,0 +1,619 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Support for Sieve scripts
|
||||||
|
*
|
||||||
|
* See the inclosed smartsieve-NOTICE file for conditions of use and distribution.
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Stephen Grier <stephengrier@users.sourceforge.net>
|
||||||
|
* @author Hadi Nategh <hn@stylite.de>
|
||||||
|
* @copyright 2002 by Stephen Grier <stephengrier@users.sourceforge.net>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
use EGroupware\Translation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Support for Sieve scripts
|
||||||
|
*/
|
||||||
|
class Script
|
||||||
|
{
|
||||||
|
var $name; /* filename of script. */
|
||||||
|
var $script; /* full ascii text of script from server. */
|
||||||
|
var $size; /* size of script in bytes. */
|
||||||
|
var $so; /* boolean: is it safe to overwrite script?
|
||||||
|
* only safe if we recognise encoding. */
|
||||||
|
var $mode; /* basic or advanced. Smartsieve can only read/write basic. */
|
||||||
|
var $rules; /* array of sieve rules. */
|
||||||
|
var $vacation; /* vacation settings. */
|
||||||
|
var $emailNotification; /* email notification settings. */
|
||||||
|
var $pcount; /* highest priority value in ruleset. */
|
||||||
|
var $errstr; /* error text. */
|
||||||
|
/**
|
||||||
|
* Body transform content types
|
||||||
|
*
|
||||||
|
* @static array
|
||||||
|
*/
|
||||||
|
static $btransform_ctype_array = array(
|
||||||
|
'0' => 'Non',
|
||||||
|
'1' => 'image',
|
||||||
|
'2' => 'multipart',
|
||||||
|
'3' => 'text',
|
||||||
|
'4' => 'media',
|
||||||
|
'5' => 'message',
|
||||||
|
'6' => 'application',
|
||||||
|
'7' => 'audio',
|
||||||
|
);
|
||||||
|
/**
|
||||||
|
* Switch on some error_log debug messages
|
||||||
|
*
|
||||||
|
* @var boolean
|
||||||
|
*/
|
||||||
|
var $debug=false;
|
||||||
|
|
||||||
|
// class constructor
|
||||||
|
function __construct ($scriptname)
|
||||||
|
{
|
||||||
|
$this->name = $scriptname;
|
||||||
|
$this->script = '';
|
||||||
|
$this->size = 0;
|
||||||
|
$this->so = true;
|
||||||
|
$this->mode = '';
|
||||||
|
$this->rules = array();
|
||||||
|
$this->vacation = array();
|
||||||
|
$this->emailNotification = array(); // Added email notifications
|
||||||
|
$this->pcount = 0;
|
||||||
|
$this->errstr = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
// get sieve script rules for this user
|
||||||
|
/**
|
||||||
|
* Retrieve the rules
|
||||||
|
*
|
||||||
|
* @param Sieve $connection
|
||||||
|
* @return boolean true, if script written successfull
|
||||||
|
*/
|
||||||
|
function retrieveRules (Sieve $connection)
|
||||||
|
{
|
||||||
|
#global $_SESSION;
|
||||||
|
$continuebit = 1;
|
||||||
|
$sizebit = 2;
|
||||||
|
$anyofbit = 4;
|
||||||
|
$keepbit = 8;
|
||||||
|
$regexbit = 128;
|
||||||
|
|
||||||
|
if (!isset($this->name)){
|
||||||
|
$this->errstr = 'retrieveRules: no script name specified';
|
||||||
|
if ($this->debug) error_log(__CLASS__.'::'.__METHOD__.": no script name specified");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the called script name is not exist then create it
|
||||||
|
// otherwise we might get error due to non existance script
|
||||||
|
if (!in_array($this->name, $connection->listScripts()))
|
||||||
|
{
|
||||||
|
$this->updateScript($connection);
|
||||||
|
}
|
||||||
|
|
||||||
|
$script = $connection->getScript($this->name);
|
||||||
|
#print "<br>AAA: Script is ". htmlentities($script) ."<br>";
|
||||||
|
|
||||||
|
$lines = preg_split("/\n/",$script); //,PREG_SPLIT_NO_EMPTY);
|
||||||
|
|
||||||
|
$rules = array();
|
||||||
|
$vacation = array();
|
||||||
|
$emailNotification = array(); // Added email notifications
|
||||||
|
|
||||||
|
/* next line should be the recognised encoded head. if not, the script
|
||||||
|
* is of an unrecognised format, and we should not overwrite it. */
|
||||||
|
$line1 = array_shift($lines);
|
||||||
|
if (!preg_match("/^# ?Mail(.*)rules for/", $line1)){
|
||||||
|
$this->errstr = 'retrieveRules: encoding not recognised';
|
||||||
|
$this->so = false;
|
||||||
|
if ($this->debug) error_log(__CLASS__.'::'.__METHOD__.": encoding not recognised");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$this->so = true;
|
||||||
|
|
||||||
|
$line = array_shift($lines);
|
||||||
|
|
||||||
|
while (isset($line))
|
||||||
|
{
|
||||||
|
$matches = null;
|
||||||
|
if (preg_match("/^ *#(#PSEUDO|rule|vacation|mode|notify)/i",$line,$matches))
|
||||||
|
{
|
||||||
|
$line = rtrim($line);
|
||||||
|
switch ($matches[1]){
|
||||||
|
case "rule":
|
||||||
|
$bits = explode("&&", $line);
|
||||||
|
$rule = array();
|
||||||
|
$rule['priority'] = $bits[1];
|
||||||
|
$rule['status'] = $bits[2];
|
||||||
|
$rule['from'] = stripslashes($bits[3]);
|
||||||
|
$rule['to'] = stripslashes($bits[4]);
|
||||||
|
$rule['subject'] = stripslashes($bits[5]);
|
||||||
|
$rule['action'] = $bits[6];
|
||||||
|
$rule['action_arg'] = $bits[7];
|
||||||
|
// <crnl>s will be encoded as \\n. undo this.
|
||||||
|
$rule['action_arg'] = preg_replace("/\\\\n/","\r\n",$rule['action_arg']);
|
||||||
|
$rule['action_arg'] = stripslashes($rule['action_arg']);
|
||||||
|
$rule['flg'] = $bits[8]; // bitwise flag
|
||||||
|
$rule['field'] = stripslashes($bits[9]);
|
||||||
|
$rule['field_val'] = stripslashes($bits[10]);
|
||||||
|
$rule['size'] = $bits[11];
|
||||||
|
$rule['continue'] = ($bits[8] & $continuebit);
|
||||||
|
$rule['gthan'] = ($bits[8] & $sizebit); // use 'greater than'
|
||||||
|
$rule['anyof'] = ($bits[8] & $anyofbit);
|
||||||
|
$rule['keep'] = ($bits[8] & $keepbit);
|
||||||
|
$rule['regexp'] = ($bits[8] & $regexbit);
|
||||||
|
$rule['bodytransform'] = ($bits[12]);
|
||||||
|
$rule['field_bodytransform'] = ($bits[13]);
|
||||||
|
$rule['ctype'] = ($bits[14]);
|
||||||
|
$rule['field_ctype_val'] = ($bits[15]);
|
||||||
|
$rule['unconditional'] = 0;
|
||||||
|
if (!$rule['from'] && !$rule['to'] && !$rule['subject'] &&
|
||||||
|
!$rule['field'] && !$rule['size'] && $rule['action']) {
|
||||||
|
$rule['unconditional'] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
array_push($rules,$rule);
|
||||||
|
|
||||||
|
if ($rule['priority'] > $this->pcount) {
|
||||||
|
$this->pcount = $rule['priority'];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "vacation" :
|
||||||
|
if (preg_match("/^ *#vacation&&(.*)&&(.*)&&(.*)&&(.*)&&(.*)/i",$line,$bits) ||
|
||||||
|
preg_match("/^ *#vacation&&(.*)&&(.*)&&(.*)&&(.*)/i",$line,$bits)) {
|
||||||
|
$vacation['days'] = $bits[1];
|
||||||
|
$vaddresslist = preg_replace("/\"|\s/","",$bits[2]);
|
||||||
|
$vaddresses = preg_split("/,/",$vaddresslist);
|
||||||
|
$vacation['text'] = $bits[3];
|
||||||
|
|
||||||
|
// <crnl>s will be encoded as \\n. undo this.
|
||||||
|
$vacation['text'] = preg_replace("/\\\\n/","\r\n",$vacation['text']);
|
||||||
|
|
||||||
|
if (strpos($bits[4],'-')!== false)
|
||||||
|
{
|
||||||
|
$vacation['status'] = 'by_date';
|
||||||
|
list($vacation['start_date'],$vacation['end_date']) = explode('-',$bits[4]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$vacation['status'] = $bits[4];
|
||||||
|
}
|
||||||
|
$vacation['addresses'] = &$vaddresses;
|
||||||
|
|
||||||
|
$vacation['forwards'] = $bits[5];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "notify":
|
||||||
|
if (preg_match("/^ *#notify&&(.*)&&(.*)&&(.*)/i",$line,$bits)) {
|
||||||
|
$emailNotification['status'] = $bits[1];
|
||||||
|
$emailNotification['externalEmail'] = $bits[2];
|
||||||
|
$emailNotification['displaySubject'] = $bits[3];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "mode" :
|
||||||
|
if (preg_match("/^ *#mode&&(.*)/i",$line,$bits)){
|
||||||
|
if ($bits[1] == 'basic')
|
||||||
|
$this->mode = 'basic';
|
||||||
|
elseif ($bits[1] == 'advanced')
|
||||||
|
$this->mode = 'advanced';
|
||||||
|
else
|
||||||
|
$this->mode = 'unknown';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$line = array_shift($lines);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->script = $script;
|
||||||
|
$this->rules = $rules;
|
||||||
|
$this->vacation = $vacation;
|
||||||
|
if (!$connection->hasExtension('vacation')) $this->vacation = false;
|
||||||
|
$this->emailNotification = $emailNotification; // Added email notifications
|
||||||
|
if ($this->debug) error_log(__CLASS__.'::'.__METHOD__.": Script succesful retrieved: ".print_r($vacation,true));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* update and save sieve script
|
||||||
|
*
|
||||||
|
* @param Sieve $connection
|
||||||
|
* @param boolean $utf7imap_fileinto =false true: encode foldernames with utf7imap, default utf8
|
||||||
|
*/
|
||||||
|
function updateScript (Sieve $connection, $utf7imap_fileinto=false)
|
||||||
|
{
|
||||||
|
#global $_SESSION,$default,$sieve;
|
||||||
|
global $default,$sieve;
|
||||||
|
|
||||||
|
$activerules = 0;
|
||||||
|
$regexused = 0;
|
||||||
|
$regexsupported = true;
|
||||||
|
$rejectused = 0;
|
||||||
|
$vacation_active = false;
|
||||||
|
|
||||||
|
$username = $GLOBALS['egw_info']['user']['account_lid'];
|
||||||
|
$version = $GLOBALS['egw_info']['apps']['mail']['version'];
|
||||||
|
|
||||||
|
//include "$default->lib_dir/version.php";
|
||||||
|
|
||||||
|
// lets generate the main body of the script from our rules
|
||||||
|
$enotify = $variables= $supportsbody = false;
|
||||||
|
if ($connection->hasExtension('enotify')) $enotify = true;
|
||||||
|
if ($connection->hasExtension('variables')) $variables = true;
|
||||||
|
if ($connection->hasExtension('body')) $supportsbody = true;
|
||||||
|
if (!$connection->hasExtension('vacation')) $this->vacation = false;
|
||||||
|
if (!$connection->hasExtension('regex')) $regexsupported = false;
|
||||||
|
|
||||||
|
$newscriptbody = "";
|
||||||
|
$continue = 1;
|
||||||
|
|
||||||
|
foreach ($this->rules as $rule) {
|
||||||
|
$newruletext = "";
|
||||||
|
|
||||||
|
// don't print this rule if disabled.
|
||||||
|
if ($rule['status'] != 'ENABLED') {
|
||||||
|
} else {
|
||||||
|
$activerules = 1;
|
||||||
|
|
||||||
|
// conditions
|
||||||
|
|
||||||
|
$anyall = "allof";
|
||||||
|
if ($rule['anyof']) $anyall = "anyof";
|
||||||
|
if ($rule['regexp']) {
|
||||||
|
$regexused = 1;
|
||||||
|
}
|
||||||
|
$started = 0;
|
||||||
|
|
||||||
|
if (!$rule['unconditional']) {
|
||||||
|
if (!$continue) $newruletext .= "els";
|
||||||
|
$newruletext .= "if " . $anyall . " (";
|
||||||
|
if ($rule['from']) {
|
||||||
|
if (preg_match("/^\s*!/", $rule['from'])){
|
||||||
|
$newruletext .= 'not ';
|
||||||
|
$rule['from'] = preg_replace("/^\s*!/","",$rule['from']);
|
||||||
|
}
|
||||||
|
$match = ':contains';
|
||||||
|
if (preg_match("/\*|\?/", $rule['from'])) $match = ':matches';
|
||||||
|
if ($rule['regexp']) $match = ':regex';
|
||||||
|
$newruletext .= "address " . $match . " [\"From\"]";
|
||||||
|
$newruletext .= " \"" . addslashes($rule['from']) . "\"";
|
||||||
|
$started = 1;
|
||||||
|
}
|
||||||
|
if ($rule['to']) {
|
||||||
|
if ($started) $newruletext .= ", ";
|
||||||
|
if (preg_match("/^\s*!/", $rule['to'])){
|
||||||
|
$newruletext .= 'not ';
|
||||||
|
$rule['to'] = preg_replace("/^\s*!/","",$rule['to']);
|
||||||
|
}
|
||||||
|
$match = ':contains';
|
||||||
|
if (preg_match("/\*|\?/", $rule['to'])) $match = ':matches';
|
||||||
|
if ($rule['regexp']) $match = ':regex';
|
||||||
|
$newruletext .= "address " . $match . " [\"To\",\"TO\",\"Cc\",\"CC\"]";
|
||||||
|
$newruletext .= " \"" . addslashes($rule['to']) . "\"";
|
||||||
|
$started = 1;
|
||||||
|
}
|
||||||
|
if ($rule['subject']) {
|
||||||
|
if ($started) $newruletext .= ", ";
|
||||||
|
if (preg_match("/^\s*!/", $rule['subject'])){
|
||||||
|
$newruletext .= 'not ';
|
||||||
|
$rule['subject'] = preg_replace("/^\s*!/","",$rule['subject']);
|
||||||
|
}
|
||||||
|
$match = ':contains';
|
||||||
|
if (preg_match("/\*|\?/", $rule['subject'])) $match = ':matches';
|
||||||
|
if ($rule['regexp']) $match = ':regex';
|
||||||
|
$newruletext .= "header " . $match . " \"subject\"";
|
||||||
|
$newruletext .= " \"" . addslashes($rule['subject']) . "\"";
|
||||||
|
$started = 1;
|
||||||
|
}
|
||||||
|
if ($rule['field'] && $rule['field_val']) {
|
||||||
|
if ($started) $newruletext .= ", ";
|
||||||
|
if (preg_match("/^\s*!/", $rule['field_val'])){
|
||||||
|
$newruletext .= 'not ';
|
||||||
|
$rule['field_val'] = preg_replace("/^\s*!/","",$rule['field_val']);
|
||||||
|
}
|
||||||
|
$match = ':contains';
|
||||||
|
if (preg_match("/\*|\?/", $rule['field_val'])) $match = ':matches';
|
||||||
|
if ($rule['regexp']) $match = ':regex';
|
||||||
|
$newruletext .= "header " . $match . " \"" . addslashes($rule['field']) . "\"";
|
||||||
|
$newruletext .= " \"" . addslashes($rule['field_val']) . "\"";
|
||||||
|
$started = 1;
|
||||||
|
}
|
||||||
|
if ($rule['size']) {
|
||||||
|
$xthan = " :under ";
|
||||||
|
if ($rule['gthan']) $xthan = " :over ";
|
||||||
|
if ($started) $newruletext .= ", ";
|
||||||
|
$newruletext .= "size " . $xthan . $rule['size'] . "K";
|
||||||
|
$started = 1;
|
||||||
|
}
|
||||||
|
if ($supportsbody){
|
||||||
|
if (!empty($rule['field_bodytransform'])){
|
||||||
|
if ($started) $newruletext .= ", ";
|
||||||
|
$btransform = " :raw ";
|
||||||
|
$match = ' :contains';
|
||||||
|
if ($rule['bodytransform']) $btransform = " :text ";
|
||||||
|
if (preg_match("/\*|\?/", $rule['field_bodytransform'])) $match = ':matches';
|
||||||
|
if ($rule['regexp']) $match = ':regex';
|
||||||
|
$newruletext .= "body " . $btransform . $match . " \"" . $rule['field_bodytransform'] . "\"";
|
||||||
|
$started = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
if ($rule['ctype']!= '0' && !empty($rule['ctype'])){
|
||||||
|
if ($started) $newruletext .= ", ";
|
||||||
|
$btransform_ctype = self::$btransform_ctype_array[$rule['ctype']];
|
||||||
|
$ctype_subtype = "";
|
||||||
|
if ($rule['field_ctype_val']) $ctype_subtype = "/";
|
||||||
|
$newruletext .= "body :content " . " \"" . $btransform_ctype . $ctype_subtype . $rule['field_ctype_val'] . "\"" . " :contains \"\"";
|
||||||
|
$started = 1;
|
||||||
|
//error_log(__CLASS__."::".__METHOD__.array2string(Script::$btransform_ctype_array));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// actions
|
||||||
|
|
||||||
|
if (!$rule['unconditional']) $newruletext .= ") {\n\t";
|
||||||
|
|
||||||
|
if (preg_match("/folder/i",$rule['action'])) {
|
||||||
|
$newruletext .= "fileinto \"" . ($utf7imap_fileinto ?
|
||||||
|
Translation::convert($rule['action_arg'],'utf-8', 'utf7-imap') : $rule['action_arg']) . "\";";
|
||||||
|
}
|
||||||
|
if (preg_match("/reject/i",$rule['action'])) {
|
||||||
|
$newruletext .= "reject text: \n" . $rule['action_arg'] . "\n.\n;";
|
||||||
|
$rejectused = 1;
|
||||||
|
}
|
||||||
|
if (preg_match("/address/i",$rule['action'])) {
|
||||||
|
foreach(preg_split('/, ?/',$rule['action_arg']) as $addr)
|
||||||
|
{
|
||||||
|
$newruletext .= "\tredirect \"".trim($addr)."\";\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (preg_match("/discard/i",$rule['action'])) {
|
||||||
|
$newruletext .= "discard;";
|
||||||
|
}
|
||||||
|
if ($rule['keep']) $newruletext .= "\n\tkeep;";
|
||||||
|
if (!$rule['unconditional']) $newruletext .= "\n}";
|
||||||
|
|
||||||
|
$continue = 0;
|
||||||
|
if ($rule['continue']) $continue = 1;
|
||||||
|
if ($rule['unconditional']) $continue = 1;
|
||||||
|
|
||||||
|
$newscriptbody .= $newruletext . "\n\n";
|
||||||
|
|
||||||
|
} // end 'if ! ENABLED'
|
||||||
|
}
|
||||||
|
|
||||||
|
// vacation rule
|
||||||
|
|
||||||
|
if ($this->vacation) {
|
||||||
|
$vacation = $this->vacation;
|
||||||
|
if (!$vacation['days']) $vacation['days'] = ($default->vacation_days ? $default->vacation_days:'');
|
||||||
|
if (!$vacation['text']) $vacation['text'] = ($default->vacation_text ? $default->vacation_text:'');
|
||||||
|
if (!$vacation['status']) $vacation['status'] = 'on';
|
||||||
|
|
||||||
|
// filter out invalid addresses.
|
||||||
|
$ok_vaddrs = array();
|
||||||
|
foreach($vacation['addresses'] as $addr){
|
||||||
|
if ($addr != '' && preg_match("/\@/",$addr))
|
||||||
|
array_push($ok_vaddrs,$addr);
|
||||||
|
}
|
||||||
|
$vacation['addresses'] = $ok_vaddrs;
|
||||||
|
|
||||||
|
if (!$vacation['addresses'][0]){
|
||||||
|
$defaultaddr = $sieve->user . '@' . $sieve->maildomain;
|
||||||
|
array_push($vacation['addresses'],$defaultaddr);
|
||||||
|
}
|
||||||
|
if (($vacation['status'] == 'on' && strlen(trim($vacation['text']))>0)|| $vacation['status'] == 'by_date' &&
|
||||||
|
$vacation['start_date'] <= time() && time() < $vacation['end_date']+24*3600) // +24*3600 to include the end_date day
|
||||||
|
{
|
||||||
|
if (trim($vacation['forwards'])) {
|
||||||
|
$if = array();
|
||||||
|
foreach($vacation['addresses'] as $addr) {
|
||||||
|
$if[] = 'address :contains ["To","TO","Cc","CC"] "'.trim($addr).'"';
|
||||||
|
}
|
||||||
|
$newscriptbody .= 'if anyof ('.implode(', ',$if).") {\n";
|
||||||
|
foreach(preg_split('/, ?/',$vacation['forwards']) as $addr) {
|
||||||
|
$newscriptbody .= "\tredirect \"".trim($addr)."\";\n";
|
||||||
|
}
|
||||||
|
$newscriptbody .= "\tkeep;\n}\n";
|
||||||
|
}
|
||||||
|
$vacation_active = true;
|
||||||
|
if ($vacation['text'])
|
||||||
|
{
|
||||||
|
if ($regexsupported)
|
||||||
|
{
|
||||||
|
$newscriptbody .= "if header :regex ".'"X-Spam-Status" '.'"\\\\bYES\\\\b"'."{\n\tstop;\n}\n"; //stop vacation reply if it is spam
|
||||||
|
$regexused = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// if there are no regex'es supported use a different Anti-Spam Rule: if X-Spam-Status holds
|
||||||
|
// additional spamscore information (e.g. BAYES) this rule may prevent Vacation notification
|
||||||
|
// TODO: refine rule without using regex
|
||||||
|
$newscriptbody .= "if header :contains ".'"X-Spam-Status" '.'"YES"'."{\n\tstop;\n}\n"; //stop vacation reply if it is spam
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$newscriptbody .= "vacation :days " . $vacation['days'] . " :addresses [";
|
||||||
|
$first = 1;
|
||||||
|
foreach ($vacation['addresses'] as $vaddress) {
|
||||||
|
if (!$first) $newscriptbody .= ", ";
|
||||||
|
$newscriptbody .= "\"" . trim($vaddress) . "\"";
|
||||||
|
$first = 0;
|
||||||
|
}
|
||||||
|
$message = $vacation['text'];
|
||||||
|
if ($vacation['start_date'] || $vacation['end_date'])
|
||||||
|
{
|
||||||
|
$format_date = 'd M Y'; // see to it, that there is always a format, because if it is missing - no date will be output
|
||||||
|
if (!empty($GLOBALS['egw_info']['user']['preferences']['common']['dateformat'])) $format_date = $GLOBALS['egw_info']['user']['preferences']['common']['dateformat'];
|
||||||
|
$message = str_replace(array('$$start$$','$$end$$'),array(
|
||||||
|
date($format_date,$vacation['start_date']),
|
||||||
|
date($format_date,$vacation['end_date']),
|
||||||
|
),$message);
|
||||||
|
}
|
||||||
|
$newscriptbody .= "] text:\n" . $message . "\n.\n;\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// update with any changes.
|
||||||
|
$this->vacation = $vacation;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->emailNotification && $this->emailNotification['status'] == 'on') {
|
||||||
|
// format notification email header components
|
||||||
|
$notification_email = $this->emailNotification['externalEmail'];
|
||||||
|
|
||||||
|
// format notification body
|
||||||
|
$egw_site_title = $GLOBALS['egw_info']['server']['site_title'];
|
||||||
|
if ($enotify==true)
|
||||||
|
{
|
||||||
|
$notification_body = lang("You have received a new message on the")." {$egw_site_title}";
|
||||||
|
if ($variables)
|
||||||
|
{
|
||||||
|
$notification_body .= ", ";
|
||||||
|
$notification_body .= 'From: ${from}';
|
||||||
|
if ($this->emailNotification['displaySubject']) {
|
||||||
|
$notification_body .= ', Subject: ${subject}';
|
||||||
|
}
|
||||||
|
//$notification_body .= 'Size: $size$'."\n";
|
||||||
|
$newscriptbody .= 'if header :matches "subject" "*" {'."\n\t".'set "subject" "${1}";'."\n".'}'."\n\n";
|
||||||
|
$newscriptbody .= 'if header :matches "from" "*" {'."\n\t".'set "from" "${1}";'."\n".'}'."\n\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$notification_body ="[SIEVE] ".$notification_body;
|
||||||
|
}
|
||||||
|
$newscriptbody .= 'notify :message "'.$notification_body.'"'."\n\t".'"mailto:'.$notification_email.'";'."\n";
|
||||||
|
//$newscriptbody .= 'notify :message "'.$notification_body.'" :method "mailto" :options "'.$notification_email.'?subject='.$notification_subject.'";'."\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$notification_body = lang("You have received a new message on the")." {$egw_site_title}"."\n";
|
||||||
|
$notification_body .= "\n";
|
||||||
|
$notification_body .= 'From: $from$'."\n";
|
||||||
|
if ($this->emailNotification['displaySubject']) {
|
||||||
|
$notification_body .= 'Subject: $subject$'."\n";
|
||||||
|
}
|
||||||
|
//$notification_body .= 'Size: $size$'."\n";
|
||||||
|
|
||||||
|
$newscriptbody .= 'notify :message "'.$notification_body.'" :method "mailto" :options "'.$notification_email.'";'."\n";
|
||||||
|
//$newscriptbody .= 'notify :message "'.$notification_body.'" :method "mailto" :options "'.$notification_email.'?subject='.$notification_subject.'";'."\n";
|
||||||
|
}
|
||||||
|
$newscriptbody .= 'keep;'."\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate the script head
|
||||||
|
|
||||||
|
$newscripthead = "";
|
||||||
|
$newscripthead .= "#Mail filter rules for " . $username . "\n";
|
||||||
|
$newscripthead .= '#Generated by ' . $username . ' using Mail ' . $version . ' ' . date($default->script_date_format);
|
||||||
|
$newscripthead .= "\n";
|
||||||
|
|
||||||
|
if ($activerules) {
|
||||||
|
$newscripthead .= "require [\"fileinto\"";
|
||||||
|
if ($regexsupported && $regexused) $newscripthead .= ",\"regex\"";
|
||||||
|
if ($rejectused) $newscripthead .= ",\"reject\"";
|
||||||
|
if ($this->vacation && $vacation_active) {
|
||||||
|
$newscripthead .= ",\"vacation\"";
|
||||||
|
}
|
||||||
|
if ($supportsbody) $newscripthead .= ",\"body\"";
|
||||||
|
if ($this->emailNotification && $this->emailNotification['status'] == 'on') $newscripthead .= ',"'.($enotify?'e':'').'notify"'.($variables?',"variables"':''); // Added email notifications
|
||||||
|
$newscripthead .= "];\n\n";
|
||||||
|
} else {
|
||||||
|
// no active rules, but might still have an active vacation rule
|
||||||
|
$closeRequired = false;
|
||||||
|
if ($this->vacation && $vacation_active)
|
||||||
|
{
|
||||||
|
$newscripthead .= "require [\"vacation\"";
|
||||||
|
if ($regexsupported && $regexused) $newscripthead .= ",\"regex\"";
|
||||||
|
$closeRequired=true;
|
||||||
|
}
|
||||||
|
if ($this->emailNotification && $this->emailNotification['status'] == 'on')
|
||||||
|
{
|
||||||
|
if ($this->vacation && $vacation_active)
|
||||||
|
{
|
||||||
|
$newscripthead .= ",\"".($enotify?'e':'')."notify\"".($variables?',"variables"':'')."];\n\n"; // Added email notifications
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$newscripthead .= "require [\"".($enotify?'e':'')."notify\"".($variables?',"variables"':'')."];\n\n"; // Added email notifications
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($closeRequired) $newscripthead .= "];\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate the encoded script foot
|
||||||
|
|
||||||
|
$newscriptfoot = "";
|
||||||
|
$pcount = 1;
|
||||||
|
$newscriptfoot .= "##PSEUDO script start\n";
|
||||||
|
foreach ($this->rules as $rule) {
|
||||||
|
// only add rule to foot if status != deleted. this is how we delete a rule.
|
||||||
|
if ($rule['status'] != 'DELETED') {
|
||||||
|
$rule['action_arg'] = addslashes($rule['action_arg']);
|
||||||
|
// we need to handle \r\n here.
|
||||||
|
$rule['action_arg'] = preg_replace("/\r?\n/","\\n",$rule['action_arg']);
|
||||||
|
/* reset priority value. note: we only do this
|
||||||
|
* for compatibility with Websieve. */
|
||||||
|
$rule['priority'] = $pcount;
|
||||||
|
$newscriptfoot .= "#rule&&" . $rule['priority'] . "&&" . $rule['status'] . "&&" .
|
||||||
|
addslashes($rule['from']) . "&&" . addslashes($rule['to']) . "&&" . addslashes($rule['subject']) . "&&" . $rule['action'] . "&&" .
|
||||||
|
$rule['action_arg'] . "&&" . $rule['flg'] . "&&" . addslashes($rule['field']) . "&&" . addslashes($rule['field_val']) . "&&" . $rule['size'];
|
||||||
|
if ($supportsbody && (!empty($rule['field_bodytransform']) || ($rule['ctype']!= '0' && !empty($rule['ctype'])))) $newscriptfoot .= "&&" . $rule['bodytransform'] . "&&" . $rule['field_bodytransform']. "&&" . $rule['ctype'] . "&&" . $rule['field_ctype_val'];
|
||||||
|
$newscriptfoot .= "\n";
|
||||||
|
$pcount = $pcount+2;
|
||||||
|
//error_log(__CLASS__."::".__METHOD__.__LINE__.array2string($newscriptfoot));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->vacation)
|
||||||
|
{
|
||||||
|
$vacation = $this->vacation;
|
||||||
|
$newscriptfoot .= "#vacation&&" . $vacation['days'] . "&&";
|
||||||
|
$first = 1;
|
||||||
|
foreach ($vacation['addresses'] as $address) {
|
||||||
|
if (!$first) $newscriptfoot .= ", ";
|
||||||
|
$newscriptfoot .= "\"" . trim($address) . "\"";
|
||||||
|
$first = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$vacation['text'] = preg_replace("/\r?\n/","\\n",$vacation['text']);
|
||||||
|
$newscriptfoot .= "&&" . $vacation['text'] . "&&" .
|
||||||
|
($vacation['status']=='by_date' ? $vacation['start_date'].'-'.$vacation['end_date'] : $vacation['status']);
|
||||||
|
if ($vacation['forwards']) $newscriptfoot .= '&&' . $vacation['forwards'];
|
||||||
|
$newscriptfoot .= "\n";
|
||||||
|
}
|
||||||
|
if ($this->emailNotification) {
|
||||||
|
$emailNotification = $this->emailNotification;
|
||||||
|
$newscriptfoot .= "#notify&&" . $emailNotification['status'] . "&&" . $emailNotification['externalEmail'] . "&&" . $emailNotification['displaySubject'] . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$newscriptfoot .= "#mode&&basic\n";
|
||||||
|
|
||||||
|
$newscript = $newscripthead . $newscriptbody . $newscriptfoot;
|
||||||
|
$this->script = $newscript;
|
||||||
|
//error_log(__METHOD__.__LINE__.array2string($newscript));
|
||||||
|
//print "<pre>$newscript</pre>"; exit;
|
||||||
|
//print "<hr><pre>".htmlentities($newscript)."</pre><hr>";
|
||||||
|
try {
|
||||||
|
$connection->installScript($this->name, $newscript, true);
|
||||||
|
}
|
||||||
|
catch (\Exception $e) {
|
||||||
|
$this->errstr = 'updateScript: putscript failed: ' . $e->getMessage().($e->details?': '.$e->details:'');
|
||||||
|
if ($regexused&&!$regexsupported) $this->errstr .= " REGEX is not an supported CAPABILITY";
|
||||||
|
error_log(__METHOD__.__LINE__.' # Error: ->'.$this->errstr);
|
||||||
|
error_log(__METHOD__.__LINE__.' # ScriptName:'.$this->name.' Script:'.$newscript);
|
||||||
|
error_log(__METHOD__.__LINE__.' # Instance='.$GLOBALS['egw_info']['user']['domain'].', User='.$GLOBALS['egw_info']['user']['account_lid']);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
224
api/src/Mail/Sieve.php
Normal file
224
api/src/Mail/Sieve.php
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Support for Sieve scripts
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
|
* @author Klaus Leithoff <kl@stylite.de>
|
||||||
|
* @author Lars Kneschke
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
use EGroupware\Api\Translation;
|
||||||
|
use Horde;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Support for Sieve scripts
|
||||||
|
*
|
||||||
|
* Constructor and setters will throw exceptions for connection, login or other errors.
|
||||||
|
*
|
||||||
|
* retriveRules and getters will not throw an exception, if there's no script currently.
|
||||||
|
*
|
||||||
|
* Most methods incl. constructor accept a script-name, but by default current active script is used
|
||||||
|
* and if theres no script Sieve::DEFAULT_SCRIPT_NAME.
|
||||||
|
*/
|
||||||
|
class Sieve extends Horde\ManageSieve
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* reference to Imap object
|
||||||
|
*
|
||||||
|
* @var Imap
|
||||||
|
*/
|
||||||
|
var $icServer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string name of active script queried from Sieve server
|
||||||
|
*/
|
||||||
|
var $scriptName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var $rules containing the rules
|
||||||
|
*/
|
||||||
|
var $rules;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var $vacation containing the vacation
|
||||||
|
*/
|
||||||
|
var $vacation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var $emailNotification containing the emailNotification
|
||||||
|
*/
|
||||||
|
var $emailNotification;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var object $error the last PEAR error object
|
||||||
|
*/
|
||||||
|
var $error;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The timeout for the connection to the SIEVE server.
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
var $_timeout = 10;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Switch on some error_log debug messages
|
||||||
|
*
|
||||||
|
* @var boolean
|
||||||
|
*/
|
||||||
|
var $debug = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default script name used if no active script found on server
|
||||||
|
*/
|
||||||
|
const DEFAULT_SCRIPT_NAME = 'mail';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param array|Imap $params =array()
|
||||||
|
*/
|
||||||
|
function __construct($params=array())
|
||||||
|
{
|
||||||
|
if (is_a($params, __NAMESPACE__.'\\Imap'))
|
||||||
|
{
|
||||||
|
$params = array(
|
||||||
|
'host' => $params->acc_sieve_host ? $params->acc_sieve_host : $params->acc_imap_host,
|
||||||
|
'port' => $params->acc_sieve_port,
|
||||||
|
'secure' => Account::ssl2secure($params->acc_sieve_ssl),
|
||||||
|
'user' => $params->isAdminConnection ? $params->acc_imap_admin_username : $params->acc_imap_username,
|
||||||
|
'password' => $params->isAdminConnection ? $params->acc_imap_admin_password : $params->acc_imap_password,
|
||||||
|
'euser' => $params->isAdminConnection ? $params->acc_imap_username : null,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
parent::__construct($params);
|
||||||
|
|
||||||
|
$this->displayCharset = Translation::charset();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRules()
|
||||||
|
{
|
||||||
|
if (!isset($this->rules)) $this->retrieveRules();
|
||||||
|
|
||||||
|
return $this->rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getVacation()
|
||||||
|
{
|
||||||
|
if (!isset($this->rules)) $this->retrieveRules();
|
||||||
|
|
||||||
|
return $this->vacation;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getEmailNotification()
|
||||||
|
{
|
||||||
|
if (!isset($this->rules)) $this->retrieveRules();
|
||||||
|
|
||||||
|
return $this->emailNotification;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set email notifications
|
||||||
|
*
|
||||||
|
* @param array $_rules
|
||||||
|
* @param string $_scriptName
|
||||||
|
* @param boolean $utf7imap_fileinto =false true: encode foldernames with utf7imap, default utf8
|
||||||
|
*/
|
||||||
|
function setRules(array $_rules, $_scriptName=null, $utf7imap_fileinto=false)
|
||||||
|
{
|
||||||
|
$script = $this->retrieveRules($_scriptName);
|
||||||
|
$script->debug = $this->debug;
|
||||||
|
$script->rules = $_rules;
|
||||||
|
$ret = $script->updateScript($this, $utf7imap_fileinto);
|
||||||
|
$this->error = $script->errstr;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set email notifications
|
||||||
|
*
|
||||||
|
* @param array $_vacation
|
||||||
|
* @param string $_scriptName
|
||||||
|
*/
|
||||||
|
function setVacation(array $_vacation, $_scriptName=null)
|
||||||
|
{
|
||||||
|
if ($this->debug)
|
||||||
|
{
|
||||||
|
error_log(__METHOD__ . "($_scriptName," . print_r($_vacation, true) . ')');
|
||||||
|
}
|
||||||
|
$script = $this->retrieveRules($_scriptName);
|
||||||
|
$script->debug = $this->debug;
|
||||||
|
$script->vacation = $_vacation;
|
||||||
|
$ret = $script->updateScript($this);
|
||||||
|
$this->error = $script->errstr;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set email notifications
|
||||||
|
*
|
||||||
|
* @param array $_emailNotification
|
||||||
|
* @param string $_scriptName
|
||||||
|
* @return Script
|
||||||
|
*/
|
||||||
|
function setEmailNotification(array $_emailNotification, $_scriptName=null)
|
||||||
|
{
|
||||||
|
if ($_emailNotification['externalEmail'] == '' || !preg_match("/\@/",$_emailNotification['externalEmail'])) {
|
||||||
|
$_emailNotification['status'] = 'off';
|
||||||
|
$_emailNotification['externalEmail'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$script = $this->retrieveRules($_scriptName);
|
||||||
|
$script->emailNotification = $_emailNotification;
|
||||||
|
$ret = $script->updateScript($this);
|
||||||
|
$this->error = $script->errstr;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrive rules, vacation, notifications and return Script object to update them
|
||||||
|
*
|
||||||
|
* @param string $_scriptName
|
||||||
|
* @return Script
|
||||||
|
*/
|
||||||
|
function retrieveRules($_scriptName=null)
|
||||||
|
{
|
||||||
|
if (!$_scriptName)
|
||||||
|
{
|
||||||
|
// query active script from Sieve server
|
||||||
|
if (empty($this->scriptName))
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$this->scriptName = $this->getActive();
|
||||||
|
}
|
||||||
|
catch(Exception $e) {
|
||||||
|
unset($e); // ignore NOTEXISTS exception
|
||||||
|
}
|
||||||
|
if (empty($this->scriptName))
|
||||||
|
{
|
||||||
|
$this->scriptName = self::DEFAULT_SCRIPT_NAME;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$_scriptName = $this->scriptName;
|
||||||
|
}
|
||||||
|
$script = new Script($_scriptName);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$script->retrieveRules($this);
|
||||||
|
}
|
||||||
|
catch (\Exception $e) {
|
||||||
|
unset($e); // ignore not found script exception
|
||||||
|
}
|
||||||
|
$this->rules =& $script->rules;
|
||||||
|
$this->vacation =& $script->vacation;
|
||||||
|
$this->emailNotification =& $script->emailNotification; // Added email notifications
|
||||||
|
|
||||||
|
return $script;
|
||||||
|
}
|
||||||
|
}
|
266
api/src/Mail/Smtp.php
Normal file
266
api/src/Mail/Smtp.php
Normal file
@ -0,0 +1,266 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: generic base class for SMTP
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Lars Kneschke <lkneschke@linux-at-work.de>
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License Version 2+
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* EMailAdmin generic base class for SMTP
|
||||||
|
*/
|
||||||
|
class Smtp
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Label shown in EMailAdmin
|
||||||
|
*/
|
||||||
|
const DESCRIPTION = 'standard SMTP-Server';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, forward
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
|
||||||
|
*
|
||||||
|
* Logical values uses inside EGroupware, different classes might store different values internally
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLED = 'active';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute value to only forward mail
|
||||||
|
*
|
||||||
|
* Logical values uses inside EGroupware, different classes might store different values internally
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY = 'forwardOnly';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to global account object
|
||||||
|
*
|
||||||
|
* @var accounts
|
||||||
|
*/
|
||||||
|
protected $accounts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SmtpServerId
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
var $SmtpServerId;
|
||||||
|
|
||||||
|
var $smtpAuth = false;
|
||||||
|
|
||||||
|
var $editForwardingAddress = false;
|
||||||
|
|
||||||
|
var $host;
|
||||||
|
|
||||||
|
var $port;
|
||||||
|
|
||||||
|
var $username;
|
||||||
|
|
||||||
|
var $password;
|
||||||
|
|
||||||
|
var $defaultDomain;
|
||||||
|
|
||||||
|
var $loginType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param string $defaultDomain =null
|
||||||
|
*/
|
||||||
|
function __construct($defaultDomain=null)
|
||||||
|
{
|
||||||
|
$this->defaultDomain = $defaultDomain ? $defaultDomain : $GLOBALS['egw_info']['server']['mail_suffix'];
|
||||||
|
|
||||||
|
$this->accounts = $GLOBALS['egw']->accounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return description for EMailAdmin
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function description()
|
||||||
|
{
|
||||||
|
return static::DESCRIPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook called on account creation
|
||||||
|
*
|
||||||
|
* @param array $_hookValues values for keys 'account_email', 'account_firstname', 'account_lastname', 'account_lid'
|
||||||
|
* @return boolean true on success, false on error writing to ldap
|
||||||
|
*/
|
||||||
|
function addAccount($_hookValues)
|
||||||
|
{
|
||||||
|
$mailLocalAddress = $_hookValues['account_email'] ? $_hookValues['account_email'] :
|
||||||
|
Api\Accounts::email($_hookValues['account_firstname'],
|
||||||
|
$_hookValues['account_lastname'],$_hookValues['account_lid'],$this->defaultDomain);
|
||||||
|
|
||||||
|
$account_id = !empty($_hookValues['account_id']) ? $_hookValues['account_id'] :
|
||||||
|
$this->accounts->name2id($_hookValues['account_lid'], 'account_lid', 'u');
|
||||||
|
|
||||||
|
if ($this->accounts->exists($account_id) != 1)
|
||||||
|
{
|
||||||
|
throw new Api\Exception\AssertionFailed("Account #$account_id ({$_hookValues['account_lid']}) does NOT exist!");
|
||||||
|
}
|
||||||
|
return $this->setUserData($account_id, array(), array(), null, self::MAIL_ENABLED, $mailLocalAddress, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook called on account deletion
|
||||||
|
*
|
||||||
|
* @param array $_hookValues values for keys 'account_lid', 'account_id'
|
||||||
|
* @return boolean true on success, false on error writing to ldap
|
||||||
|
*/
|
||||||
|
function deleteAccount($_hookValues)
|
||||||
|
{
|
||||||
|
unset($_hookValues); // not used, but required by function signature
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all email addresses of an account
|
||||||
|
*
|
||||||
|
* @param string $_accountName
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getAccountEmailAddress($_accountName)
|
||||||
|
{
|
||||||
|
$emailAddresses = array();
|
||||||
|
|
||||||
|
if (($account_id = $this->accounts->name2id($_accountName, 'account_lid', 'u')))
|
||||||
|
{
|
||||||
|
$realName = trim($GLOBALS['egw_info']['user']['account_firstname'] . (!empty($GLOBALS['egw_info']['user']['account_firstname']) ? ' ' : '') . $GLOBALS['egw_info']['user']['account_lastname']);
|
||||||
|
$emailAddresses[] = array (
|
||||||
|
'name' => $realName,
|
||||||
|
'address' => $this->accounts->id2name($account_id, 'account_email'),
|
||||||
|
'type' => 'default',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $emailAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the data of a given user
|
||||||
|
*
|
||||||
|
* @param int|string $user numerical account-id, account-name or email address
|
||||||
|
* @param boolean $match_uid_at_domain =true true: uid@domain matches, false only an email or alias address matches
|
||||||
|
* @return array with values for keys 'mailLocalAddress', 'mailAlternateAddress' (array), 'mailForwardingAddress' (array),
|
||||||
|
* 'accountStatus' ("active"), 'quotaLimit' and 'deliveryMode' ("forwardOnly")
|
||||||
|
*/
|
||||||
|
function getUserData($user, $match_uid_at_domain=false)
|
||||||
|
{
|
||||||
|
unset($user, $match_uid_at_domain); // not used, but required by function signature
|
||||||
|
|
||||||
|
$userData = array();
|
||||||
|
|
||||||
|
return $userData;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saves the forwarding information
|
||||||
|
*
|
||||||
|
* @param int $_accountID
|
||||||
|
* @param string|array $_forwardingAddress
|
||||||
|
* @param string $_keepLocalCopy 'yes'
|
||||||
|
* @return boolean true on success, false on error writing
|
||||||
|
*/
|
||||||
|
function saveSMTPForwarding($_accountID, $_forwardingAddress, $_keepLocalCopy)
|
||||||
|
{
|
||||||
|
return $this->setUserData($_accountID, array(),
|
||||||
|
$_forwardingAddress ? (array)$_forwardingAddress : array(),
|
||||||
|
$_keepLocalCopy != 'yes' ? self::FORWARD_ONLY : null, null, null, null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the data of a given user
|
||||||
|
*
|
||||||
|
* @param int $_uidnumber numerical user-id
|
||||||
|
* @param array $_mailAlternateAddress
|
||||||
|
* @param array $_mailForwardingAddress
|
||||||
|
* @param string $_deliveryMode
|
||||||
|
* @param string $_accountStatus
|
||||||
|
* @param string $_mailLocalAddress
|
||||||
|
* @param int $_quota in MB
|
||||||
|
* @param boolean $_forwarding_only =false true: store only forwarding info, used internally by saveSMTPForwarding
|
||||||
|
* @param string $_setMailbox =null used only for account migration
|
||||||
|
* @return boolean true on success, false on error writing to ldap
|
||||||
|
*/
|
||||||
|
function setUserData($_uidnumber, array $_mailAlternateAddress, array $_mailForwardingAddress, $_deliveryMode,
|
||||||
|
$_accountStatus, $_mailLocalAddress, $_quota, $_forwarding_only=false, $_setMailbox=null)
|
||||||
|
{
|
||||||
|
unset($_uidnumber, $_mailAlternateAddress, $_mailForwardingAddress, // not used, but require by function signature
|
||||||
|
$_deliveryMode, $_accountStatus, $_mailLocalAddress, $_quota, $_forwarding_only, $_setMailbox);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook called on account update
|
||||||
|
*
|
||||||
|
* @param array $_hookValues values for keys 'account_email', 'account_firstname', 'account_lastname', 'account_lid', 'account_id'
|
||||||
|
* @return boolean true on success, false on error writing to ldap
|
||||||
|
*/
|
||||||
|
function updateAccount($_hookValues)
|
||||||
|
{
|
||||||
|
unset($_hookValues); // not used, but required by function signature
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build mailbox address for given account and mail_addr_type
|
||||||
|
*
|
||||||
|
* If $account is an array (with values for keys account_(id|lid|email), it does NOT call accounts class
|
||||||
|
*
|
||||||
|
* @param int|array $account account_id or whole account array with values for keys
|
||||||
|
* @param string $domain=null domain, default use $this->defaultDomain
|
||||||
|
* @param string $mail_login_type=null standard(uid), vmailmgr(uid@domain), email or uidNumber,
|
||||||
|
* default use $this->loginType
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
/*static*/ public function mailbox_addr($account,$domain=null,$mail_login_type=null)
|
||||||
|
{
|
||||||
|
if (is_null($domain)) $domain = $this->defaultDomain;
|
||||||
|
if (is_null($mail_login_type)) $mail_login_type = $this->loginType;
|
||||||
|
|
||||||
|
switch($mail_login_type)
|
||||||
|
{
|
||||||
|
case 'email':
|
||||||
|
$mbox = is_array($account) ? $account['account_email'] : $GLOBALS['egw']->accounts->id2name($account,'account_email');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'uidNumber':
|
||||||
|
if (is_array($account)) $account = $account['account_id'];
|
||||||
|
$mbox = 'u'.$account.'@'.$domain;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'standard':
|
||||||
|
$mbox = is_array($account) ? $account['account_lid'] : $GLOBALS['egw']->accounts->id2name($account);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'vmailmgr':
|
||||||
|
default:
|
||||||
|
$mbox = is_array($account) ? $account['account_lid'] : $GLOBALS['egw']->accounts->id2name($account);
|
||||||
|
$mbox .= '@'.$domain;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//error_log(__METHOD__."(".array2string($account).",'$domain','$mail_login_type') = '$mbox'");
|
||||||
|
|
||||||
|
return $mbox;
|
||||||
|
}
|
||||||
|
}
|
169
api/src/Mail/Smtp/Ads.php
Normal file
169
api/src/Mail/Smtp/Ads.php
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Postfix using Active Directorys Exchange attributes
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @copyright (c) 2013-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Smtp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Postfix using Active Directorys proxyAddresses attribute
|
||||||
|
* (available without installing Exchange schemas).
|
||||||
|
*
|
||||||
|
* This plugin is NOT meant to administrate an Exchange Server using AD!
|
||||||
|
*
|
||||||
|
* Aliases, forwards, forward only and quota is stored in
|
||||||
|
* multivalued attribute proxyAddresses with different prefixes.
|
||||||
|
*
|
||||||
|
* Primary mail address is additionally stored in proxyAddresses.
|
||||||
|
* Disabling mail removes proxyAddresses completly.
|
||||||
|
*
|
||||||
|
* @link http://msdn.microsoft.com/en-us/library/ms679424(v=vs.85).aspx
|
||||||
|
* @link http://www.dovecot.org/list/dovecot/2010-February/046763.html
|
||||||
|
*/
|
||||||
|
class Ads extends Ldap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Label shown in EMailAdmin
|
||||||
|
*/
|
||||||
|
const DESCRIPTION = 'Active Directory';
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, forward
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|forward';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of schema, has to be in the right case!
|
||||||
|
*/
|
||||||
|
const SCHEMA = 'top';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter for users
|
||||||
|
*
|
||||||
|
* objectCategory is indexed, while objectclass is not!
|
||||||
|
*/
|
||||||
|
const USER_FILTER = '(objectCategory=person)';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of schema for groups, has to be in the right case!
|
||||||
|
*/
|
||||||
|
const GROUP_SCHEMA = 'group';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLE_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for aliases OR false to use mail
|
||||||
|
*/
|
||||||
|
const ALIAS_ATTR = 'proxyaddresses';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Caseinsensitive prefix for aliases (eg. "smtp:"), aliases get added with it and only aliases with it are reported
|
||||||
|
*/
|
||||||
|
const ALIAS_PREFIX = 'smtp:';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Primary mail address required as an alias too: true or false
|
||||||
|
*/
|
||||||
|
const REQUIRE_MAIL_AS_ALIAS = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for forwards OR false if not possible
|
||||||
|
*/
|
||||||
|
const FORWARD_ATTR = 'proxyaddresses';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Caseinsensitive prefix for forwards (eg. "forward:"), forwards get added with it and only forwards with it are reported
|
||||||
|
*/
|
||||||
|
const FORWARD_PREFIX = 'forward:';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to only forward mail, OR false if not available
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY_ATTR = 'proxyaddresses';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Value of forward-only attribute, if not set any value will switch forward only on (checked with =*)
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY_VALUE = 'forwardOnly';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for mailbox, to which mail gets delivered OR false if not supported
|
||||||
|
*/
|
||||||
|
const MAILBOX_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for quota limit of user in MB
|
||||||
|
*/
|
||||||
|
const QUOTA_ATTR = 'proxyaddresses';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Caseinsensitive prefix for quota (eg. "quota:"), quota get added with it and only quota with it are reported
|
||||||
|
*/
|
||||||
|
const QUOTA_PREFIX = 'quota:';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal quota in MB is multiplicated with this factor before stored in LDAP
|
||||||
|
*/
|
||||||
|
const QUOTA_FACTOR = 1048576;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for user name
|
||||||
|
*/
|
||||||
|
const USER_ATTR = 'samaccountname';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for numeric user id (optional)
|
||||||
|
*
|
||||||
|
* No single uidNumber attribute, as we use RID (last part of objectSid attribute) for it.
|
||||||
|
*/
|
||||||
|
const USERID_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return LDAP connection
|
||||||
|
*/
|
||||||
|
protected function getLdapConnection()
|
||||||
|
{
|
||||||
|
static $ldap=null;
|
||||||
|
|
||||||
|
if (is_null($ldap))
|
||||||
|
{
|
||||||
|
if (!is_a($GLOBALS['egw']->accounts->backend, 'EGroupware\\Api\\Accounts\\Ads'))
|
||||||
|
{
|
||||||
|
throw new \EGroupware\Api\Exception\WrongUserinput('Postfix with Active Directory requires accounts stored in ADS!');
|
||||||
|
}
|
||||||
|
$ldap = $GLOBALS['egw']->accounts->backend->ldap_connection();
|
||||||
|
}
|
||||||
|
return $ldap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param string $defaultDomain =null
|
||||||
|
*/
|
||||||
|
function __construct($defaultDomain=null)
|
||||||
|
{
|
||||||
|
parent::__construct($defaultDomain);
|
||||||
|
|
||||||
|
$this->setBase($GLOBALS['egw']->accounts->backend->ads_context());
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Return description for EMailAdmin
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function description()
|
||||||
|
{
|
||||||
|
return static::DESCRIPTION;
|
||||||
|
}
|
||||||
|
}
|
66
api/src/Mail/Smtp/Dbmailuser.php
Executable file
66
api/src/Mail/Smtp/Dbmailuser.php
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Postfix with dbmailUser schema
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @copyright (c) 2010-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Smtp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Postfix with dbmailUser schema
|
||||||
|
*/
|
||||||
|
class Dbmailuser extends Ldap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, forward
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|forward';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of schema, has to be the correct case!
|
||||||
|
*/
|
||||||
|
const SCHEMA = 'dbmailUser';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLE_ATTR = 'accountstatus';
|
||||||
|
/**
|
||||||
|
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLED = 'active';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for aliases OR false to use mail
|
||||||
|
*/
|
||||||
|
const ALIAS_ATTR = 'mailalternateaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Primary mail address required as an alias too: true or false
|
||||||
|
*/
|
||||||
|
const REQUIRE_MAIL_AS_ALIAS=false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for forwards OR false if not possible
|
||||||
|
*/
|
||||||
|
const FORWARD_ATTR = 'mailforwardingaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to only forward mail, OR false if not available
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY_ATTR = 'deliverymode';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for mailbox, to which mail gets delivered OR false if not supported
|
||||||
|
*/
|
||||||
|
//const MAILBOX_ATTR = 'deliveryprogrampath';
|
||||||
|
//const MAILBOX_ATTR = 'dbmailuid';
|
||||||
|
const MAILBOX_ATTR = false;
|
||||||
|
}
|
815
api/src/Mail/Smtp/Ldap.php
Normal file
815
api/src/Mail/Smtp/Ldap.php
Normal file
@ -0,0 +1,815 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: generic base class for SMTP configuration via LDAP
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @copyright (c) 2010-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Smtp;
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generic base class for SMTP configuration via LDAP
|
||||||
|
*
|
||||||
|
* This class uses just inetOrgPerson schema to store primary mail address and aliases
|
||||||
|
*
|
||||||
|
* Aliases are stored as aditional mail Attributes. The primary mail address is the first one.
|
||||||
|
* This schema does NOT support forwarding or disabling of an account for mail.
|
||||||
|
*
|
||||||
|
* Aliases, forwards, forward-only and quota attribute can be stored in same multivalued attribute
|
||||||
|
* with different prefixes.
|
||||||
|
*
|
||||||
|
* Please do NOT copy this class! Extend it and set the constants different.
|
||||||
|
*
|
||||||
|
* Please note: schema names muse use correct case (eg. "inetOrgPerson"),
|
||||||
|
* while attribute name muse use lowercase, as LDAP returns them as keys in lowercase!
|
||||||
|
*/
|
||||||
|
class Ldap extends Mail\Smtp
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Name of schema, has to be in the right case!
|
||||||
|
*/
|
||||||
|
const SCHEMA = 'inetOrgPerson';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter for users
|
||||||
|
*/
|
||||||
|
const USER_FILTER = '(objectClass=posixAccount)';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of schema for groups, has to be in the right case!
|
||||||
|
*/
|
||||||
|
const GROUP_SCHEMA = 'posixGroup';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute with mail address(es)
|
||||||
|
*/
|
||||||
|
const MAIL_ATTR = 'mail';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLE_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Value for MAIL_ENABLED to use local mail address
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLED_USE_MAIL = '@mail';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for aliases OR false to use mail
|
||||||
|
*/
|
||||||
|
const ALIAS_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Caseinsensitive prefix for aliases (eg. "smtp:"), aliases get added with it and only aliases with it are reported
|
||||||
|
*/
|
||||||
|
const ALIAS_PREFIX = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Primary mail address required as an alias too: true or false
|
||||||
|
*/
|
||||||
|
const REQUIRE_MAIL_AS_ALIAS = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for forwards OR false if not possible
|
||||||
|
*/
|
||||||
|
const FORWARD_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Caseinsensitive prefix for forwards (eg. "forward:"), forwards get added with it and only forwards with it are reported
|
||||||
|
*/
|
||||||
|
const FORWARD_PREFIX = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to only forward mail, OR false if not available
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Value of forward-only attribute, if empty any value will switch forward only on (checked with =*)
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY = 'forwardOnly';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for mailbox, to which mail gets delivered OR false if not supported
|
||||||
|
*/
|
||||||
|
const MAILBOX_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for quota limit of user in MB
|
||||||
|
*/
|
||||||
|
const QUOTA_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Caseinsensitive prefix for quota (eg. "quota:"), quota get added with it and only quota with it are reported
|
||||||
|
*/
|
||||||
|
const QUOTA_PREFIX = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal quota in MB is multiplicated with this factor before stored in LDAP
|
||||||
|
*/
|
||||||
|
const QUOTA_FACTOR = 1048576;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for user name
|
||||||
|
*/
|
||||||
|
const USER_ATTR = 'uid';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for numeric user id (optional)
|
||||||
|
*/
|
||||||
|
const USERID_ATTR = 'uidnumber';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base for all searches, defaults to $GLOBALS['egw_info']['server']['ldap_context'] and can be set via setBase($base)
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $search_base;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Special search filter for getUserData only
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $search_filter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log all LDAP writes / actions to error_log
|
||||||
|
*/
|
||||||
|
var $debug = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* from here on implementation, please do NOT copy but extend it!
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param string $defaultDomain =null
|
||||||
|
*/
|
||||||
|
function __construct($defaultDomain=null)
|
||||||
|
{
|
||||||
|
parent::__construct($defaultDomain);
|
||||||
|
|
||||||
|
if (empty($this->search_base))
|
||||||
|
{
|
||||||
|
$this->setBase($GLOBALS['egw_info']['server']['ldap_context']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return description for EMailAdmin
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function description()
|
||||||
|
{
|
||||||
|
return 'LDAP ('.static::SCHEMA.')';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set ldap search filter for aliases and forwards (getUserData)
|
||||||
|
*
|
||||||
|
* @param string $filter
|
||||||
|
*/
|
||||||
|
function setFilter($filter)
|
||||||
|
{
|
||||||
|
$this->search_filter = $filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set ldap search base, default $GLOBALS['egw_info']['server']['ldap_context']
|
||||||
|
*
|
||||||
|
* @param string $base
|
||||||
|
*/
|
||||||
|
function setBase($base)
|
||||||
|
{
|
||||||
|
$this->search_base = $base;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook called on account creation
|
||||||
|
*
|
||||||
|
* @param array $_hookValues values for keys 'account_email', 'account_firstname', 'account_lastname', 'account_lid'
|
||||||
|
* @return boolean true on success, false on error writing to ldap
|
||||||
|
*/
|
||||||
|
function addAccount($_hookValues)
|
||||||
|
{
|
||||||
|
$mailLocalAddress = $_hookValues['account_email'] ? $_hookValues['account_email'] :
|
||||||
|
Api\Accounts::email($_hookValues['account_firstname'],
|
||||||
|
$_hookValues['account_lastname'],$_hookValues['account_lid'],$this->defaultDomain);
|
||||||
|
|
||||||
|
$ds = $this->getLdapConnection();
|
||||||
|
|
||||||
|
$filter = static::USER_ATTR."=".Api\Ldap::quote($_hookValues['account_lid']);
|
||||||
|
|
||||||
|
if (!($sri = @ldap_search($ds, $this->search_base, $filter)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$allValues = ldap_get_entries($ds, $sri);
|
||||||
|
$accountDN = $allValues[0]['dn'];
|
||||||
|
$objectClasses = $allValues[0]['objectclass'];
|
||||||
|
unset($objectClasses['count']);
|
||||||
|
|
||||||
|
// add our mail schema, if not already set
|
||||||
|
if(!in_array(static::SCHEMA,$objectClasses) && !in_array(strtolower(static::SCHEMA),$objectClasses))
|
||||||
|
{
|
||||||
|
$objectClasses[] = static::SCHEMA;
|
||||||
|
}
|
||||||
|
// the new code for postfix+cyrus+ldap
|
||||||
|
$newData = array(
|
||||||
|
static::MAIL_ATTR => $mailLocalAddress,
|
||||||
|
'objectclass' => $objectClasses
|
||||||
|
);
|
||||||
|
// does schema have explicit alias attribute AND require mail added as alias too
|
||||||
|
if (static::ALIAS_ATTR && static::REQUIRE_MAIL_AS_ALIAS)
|
||||||
|
{
|
||||||
|
$newData[static::ALIAS_ATTR] = static::ALIAS_PREFIX.$mailLocalAddress;
|
||||||
|
}
|
||||||
|
// does schema support enabling/disabling mail via attribute
|
||||||
|
if (static::MAIL_ENABLE_ATTR)
|
||||||
|
{
|
||||||
|
$newData[static::MAIL_ENABLE_ATTR] = static::MAIL_ENABLED == self::MAIL_ENABLED_USE_MAIL ?
|
||||||
|
$mailLocalAddress : static::MAIL_ENABLE_ATTR;
|
||||||
|
}
|
||||||
|
// does schema support an explicit mailbox name --> set it
|
||||||
|
if (static::MAILBOX_ATTR)
|
||||||
|
{
|
||||||
|
$newData[static::MAILBOX_ATTR] = self::mailbox_addr($_hookValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
// allow extending classes to add extra data
|
||||||
|
$this->addAccountExtra($_hookValues, $allValues[0], $newData);
|
||||||
|
|
||||||
|
if (!($ret = ldap_mod_replace($ds, $accountDN, $newData)) || $this->debug)
|
||||||
|
{
|
||||||
|
error_log(__METHOD__.'('.array2string(func_get_args()).") --> ldap_mod_replace(,'$accountDN',".
|
||||||
|
array2string($newData).') returning '.array2string($ret).
|
||||||
|
(!$ret?' ('.ldap_error($ds).')':''));
|
||||||
|
}
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add additional values to addAccount and setUserData ($_hookValues['location'])
|
||||||
|
*
|
||||||
|
* @param array $_hookValues
|
||||||
|
* @param array $allValues existing data of account as returned by ldap query
|
||||||
|
* @param array $newData data to update
|
||||||
|
*/
|
||||||
|
function addAccountExtra(array $_hookValues, array $allValues, array &$newData)
|
||||||
|
{
|
||||||
|
unset($_hookValues, $allValues, $newData); // not used, but required by function signature
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all email addresses of an account
|
||||||
|
*
|
||||||
|
* @param string $_accountName
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getAccountEmailAddress($_accountName)
|
||||||
|
{
|
||||||
|
$emailAddresses = array();
|
||||||
|
$ds = $this->getLdapConnection();
|
||||||
|
$filter = '(&'.static::USER_FILTER.'('.static::USER_ATTR.'='.Api\Ldap::quote($_accountName).'))';
|
||||||
|
$attributes = array('dn', static::MAIL_ATTR, static::ALIAS_ATTR);
|
||||||
|
$sri = @ldap_search($ds, $this->search_base, $filter, $attributes);
|
||||||
|
|
||||||
|
if ($sri)
|
||||||
|
{
|
||||||
|
$realName = trim($GLOBALS['egw_info']['user']['account_firstname'] . (!empty($GLOBALS['egw_info']['user']['account_firstname']) ? ' ' : '') . $GLOBALS['egw_info']['user']['account_lastname']);
|
||||||
|
$allValues = ldap_get_entries($ds, $sri);
|
||||||
|
|
||||||
|
if(isset($allValues[0][static::MAIL_ATTR]))
|
||||||
|
{
|
||||||
|
foreach($allValues[0][static::MAIL_ATTR] as $key => $value)
|
||||||
|
{
|
||||||
|
if ($key === 'count') continue;
|
||||||
|
|
||||||
|
$emailAddresses[] = array (
|
||||||
|
'name' => $realName,
|
||||||
|
'address' => $value,
|
||||||
|
'type' => !$key ? 'default' : 'alternate',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (static::ALIAS_ATTR && isset($allValues[0][static::ALIAS_ATTR]))
|
||||||
|
{
|
||||||
|
foreach(self::getAttributePrefix($allValues[0][static::ALIAS_ATTR], static::ALIAS_PREFIX) as $value)
|
||||||
|
{
|
||||||
|
$emailAddresses[] = array(
|
||||||
|
'name' => $realName,
|
||||||
|
'address' => $value,
|
||||||
|
'type' => 'alternate'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($this->debug) error_log(__METHOD__."('$_accountName') returning ".array2string($emailAddresses));
|
||||||
|
|
||||||
|
return $emailAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the data of a given user
|
||||||
|
*
|
||||||
|
* Multiple accounts may match, if an email address is specified.
|
||||||
|
* In that case only mail routing fields "uid", "mailbox" and "forward" contain values
|
||||||
|
* from all accounts!
|
||||||
|
*
|
||||||
|
* @param int|string $user numerical account-id, account-name or email address
|
||||||
|
* @param boolean $match_uid_at_domain =true true: uid@domain matches, false only an email or alias address matches
|
||||||
|
* @return array with values for keys 'mailLocalAddress', 'mailAlternateAddress' (array), 'mailForwardingAddress' (array),
|
||||||
|
* 'accountStatus' ("active"), 'quotaLimit' and 'deliveryMode' ("forwardOnly")
|
||||||
|
*/
|
||||||
|
function getUserData($user, $match_uid_at_domain=false)
|
||||||
|
{
|
||||||
|
$userData = array(
|
||||||
|
'mailbox' => array(),
|
||||||
|
'forward' => array(),
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
$ldap = $this->getLdapConnection();
|
||||||
|
|
||||||
|
if (is_numeric($user) && static::USERID_ATTR)
|
||||||
|
{
|
||||||
|
$filter = '('.static::USERID_ATTR.'='.(int)$user.')';
|
||||||
|
}
|
||||||
|
elseif (strpos($user, '@') === false)
|
||||||
|
{
|
||||||
|
if (is_numeric($user)) $user = $GLOBALS['egw']->accounts->id2name($user);
|
||||||
|
$filter = '(&'.static::USER_FILTER.'('.static::USER_ATTR.'='.Api\Ldap::quote($user).'))';
|
||||||
|
}
|
||||||
|
else // email address --> build filter by attributes defined in config
|
||||||
|
{
|
||||||
|
list($namepart, $domain) = explode('@', $user);
|
||||||
|
if (!empty($this->search_filter))
|
||||||
|
{
|
||||||
|
$filter = strtr($this->search_filter, array(
|
||||||
|
'%s' => Api\Ldap::quote($user),
|
||||||
|
'%u' => Api\Ldap::quote($namepart),
|
||||||
|
'%d' => Api\Ldap::quote($domain),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$to_or = array('('.static::MAIL_ATTR.'='.Api\Ldap::quote($user).')');
|
||||||
|
if ($match_uid_at_domain) $to_or[] = '('.static::USER_ATTR.'='.Api\Ldap::quote($namepart).')';
|
||||||
|
if (static::ALIAS_ATTR)
|
||||||
|
{
|
||||||
|
$to_or[] = '('.static::ALIAS_ATTR.'='.static::ALIAS_PREFIX.Api\Ldap::quote($user).')';
|
||||||
|
}
|
||||||
|
$filter = count($to_or) > 1 ? '(|'.explode('', $to_or).')' : $to_or[0];
|
||||||
|
|
||||||
|
// if an enable attribute is set, only return enabled accounts
|
||||||
|
if (static::MAIL_ENABLE_ATTR)
|
||||||
|
{
|
||||||
|
$filter = '(&('.static::MAIL_ENABLE_ATTR.'='.
|
||||||
|
(static::MAIL_ENABLED ? static::MAIL_ENABLED : '*').")$filter)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$attributes = array_values(array_diff(array(
|
||||||
|
static::MAIL_ATTR, 'objectclass', static::USER_ATTR, static::MAIL_ENABLE_ATTR, static::ALIAS_ATTR,
|
||||||
|
static::MAILBOX_ATTR, static::FORWARD_ATTR, static::FORWARD_ONLY_ATTR, static::QUOTA_ATTR,
|
||||||
|
), array(false, '')));
|
||||||
|
|
||||||
|
$sri = ldap_search($ldap, $this->search_base, $filter, $attributes);
|
||||||
|
|
||||||
|
if ($sri)
|
||||||
|
{
|
||||||
|
$allValues = ldap_get_entries($ldap, $sri);
|
||||||
|
if ($this->debug) error_log(__METHOD__."('$user') --> ldap_search(, '$this->search_base', '$filter') --> ldap_get_entries=".array2string($allValues[0]));
|
||||||
|
|
||||||
|
foreach($allValues as $key => $values)
|
||||||
|
{
|
||||||
|
if ($key === 'count') continue;
|
||||||
|
|
||||||
|
// groups are always active (if they have an email) and allways forwardOnly
|
||||||
|
if (in_array(static::GROUP_SCHEMA, $values['objectclass']))
|
||||||
|
{
|
||||||
|
$accountStatus = Mail\Smtp::MAIL_ENABLED;
|
||||||
|
$deliveryMode = Mail\Smtp::FORWARD_ONLY;
|
||||||
|
}
|
||||||
|
else // for users we have to check the attributes
|
||||||
|
{
|
||||||
|
if (static::MAIL_ENABLE_ATTR)
|
||||||
|
{
|
||||||
|
$accountStatus = isset($values[static::MAIL_ENABLE_ATTR]) &&
|
||||||
|
(static::MAIL_ENABLED === self::MAIL_ENABLED_USE_MAIL && !empty($values[static::MAIL_ENABLE_ATTR][0]) ||
|
||||||
|
static::MAIL_ENABLED && !strcasecmp($values[static::MAIL_ENABLE_ATTR][0], static::MAIL_ENABLED) ||
|
||||||
|
!static::MAIL_ENABLED && $values[static::ALIAS_ATTR ? static::ALIAS_ATTR : static::MAIL_ATTR]['count'] > 0) ?
|
||||||
|
Mail\Smtp::MAIL_ENABLED : '';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$accountStatus = $values[static::ALIAS_ATTR ? static::ALIAS_ATTR : static::MAIL_ATTR]['count'] > 0 ?
|
||||||
|
Mail\Smtp::MAIL_ENABLED : '';
|
||||||
|
}
|
||||||
|
if (static::FORWARD_ONLY_ATTR)
|
||||||
|
{
|
||||||
|
if (static::FORWARD_ONLY) // check caseinsensitiv for existence of that value
|
||||||
|
{
|
||||||
|
$deliveryMode = self::getAttributePrefix($values[static::FORWARD_ONLY_ATTR], static::FORWARD_ONLY) ?
|
||||||
|
Mail\Smtp::FORWARD_ONLY : '';
|
||||||
|
}
|
||||||
|
else // check for existence of any value
|
||||||
|
{
|
||||||
|
$deliveryMode = $values[static::FORWARD_ONLY_ATTR]['count'] > 0 ?
|
||||||
|
Mail\Smtp::FORWARD_ONLY : '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$deliveryMode = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// collect mail routing data (can be from multiple (active) accounts and groups!)
|
||||||
|
if ($accountStatus)
|
||||||
|
{
|
||||||
|
// groups never have a mailbox, accounts can have a deliveryMode of "forwardOnly"
|
||||||
|
if ($deliveryMode != Mail\Smtp::FORWARD_ONLY)
|
||||||
|
{
|
||||||
|
$userData[static::USER_ATTR][] = $values[static::USER_ATTR][0];
|
||||||
|
if (static::MAILBOX_ATTR && isset($values[static::MAILBOX_ATTR]))
|
||||||
|
{
|
||||||
|
$userData['mailbox'][] = $values[static::MAILBOX_ATTR][0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (static::FORWARD_ATTR && $values[static::FORWARD_ATTR])
|
||||||
|
{
|
||||||
|
$userData['forward'] = array_merge($userData['forward'],
|
||||||
|
self::getAttributePrefix($values[static::FORWARD_ATTR], static::FORWARD_PREFIX, false));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// regular user-data can only be from users, NOT groups
|
||||||
|
if (in_array(static::GROUP_SCHEMA, $values['objectclass'])) continue;
|
||||||
|
|
||||||
|
$userData['mailLocalAddress'] = $values[static::MAIL_ATTR][0];
|
||||||
|
$userData['accountStatus'] = $accountStatus;
|
||||||
|
|
||||||
|
if (static::ALIAS_ATTR)
|
||||||
|
{
|
||||||
|
$userData['mailAlternateAddress'] = self::getAttributePrefix($values[static::ALIAS_ATTR], static::ALIAS_PREFIX);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$userData['mailAlternateAddress'] = (array)$values[static::MAIL_ATTR];
|
||||||
|
unset($userData['mailAlternateAddress']['count']);
|
||||||
|
unset($userData['mailAlternateAddress'][0]);
|
||||||
|
$userData['mailAlternateAddress'] = array_values($userData['mailAlternateAddress']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (static::FORWARD_ATTR)
|
||||||
|
{
|
||||||
|
$userData['mailForwardingAddress'] = self::getAttributePrefix($values[static::FORWARD_ATTR], static::FORWARD_PREFIX);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (static::MAILBOX_ATTR) $userData['mailMessageStore'] = $values[static::MAILBOX_ATTR][0];
|
||||||
|
|
||||||
|
$userData['deliveryMode'] = $deliveryMode;
|
||||||
|
|
||||||
|
// eg. suse stores all email addresses as aliases
|
||||||
|
if (static::REQUIRE_MAIL_AS_ALIAS &&
|
||||||
|
($k = array_search($userData['mailLocalAddress'],$userData['mailAlternateAddress'])) !== false)
|
||||||
|
{
|
||||||
|
unset($userData['mailAlternateAddress'][$k]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (static::QUOTA_ATTR && isset($values[static::QUOTA_ATTR]))
|
||||||
|
{
|
||||||
|
$userData['quotaLimit'] = self::getAttributePrefix($values[static::QUOTA_ATTR], static::QUOTA_PREFIX);
|
||||||
|
$userData['quotaLimit'] = array_shift($userData['quotaLimit']);
|
||||||
|
$userData['quotaLimit'] = $userData['quotaLimit'] ? $userData['quotaLimit'] / static::QUOTA_FACTOR : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($this->debug) error_log(__METHOD__."('$user') returning ".array2string($userData));
|
||||||
|
|
||||||
|
return $userData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the data of a given user
|
||||||
|
*
|
||||||
|
* @param int $_uidnumber numerical user-id
|
||||||
|
* @param array $_mailAlternateAddress
|
||||||
|
* @param array $_mailForwardingAddress
|
||||||
|
* @param string $_deliveryMode
|
||||||
|
* @param string $_accountStatus
|
||||||
|
* @param string $_mailLocalAddress
|
||||||
|
* @param int $_quota in MB
|
||||||
|
* @param boolean $_forwarding_only =false not used as we have our own addAccount method
|
||||||
|
* @param string $_setMailbox =null used only for account migration
|
||||||
|
* @return boolean true on success, false on error writing to ldap
|
||||||
|
*/
|
||||||
|
function setUserData($_uidnumber, array $_mailAlternateAddress, array $_mailForwardingAddress, $_deliveryMode,
|
||||||
|
$_accountStatus, $_mailLocalAddress, $_quota, $_forwarding_only=false, $_setMailbox=null)
|
||||||
|
{
|
||||||
|
unset($_forwarding_only); // not used
|
||||||
|
|
||||||
|
if (static::USERID_ATTR)
|
||||||
|
{
|
||||||
|
$filter = static::USERID_ATTR.'='.(int)$_uidnumber;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$uid = $GLOBALS['egw']->accounts->id2name($_uidnumber);
|
||||||
|
$filter = static::USER_ATTR.'='.Api\Ldap::quote($uid);
|
||||||
|
}
|
||||||
|
$ldap = $this->getLdapConnection();
|
||||||
|
|
||||||
|
if (!($sri = @ldap_search($ldap, $this->search_base, $filter)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$allValues = ldap_get_entries($ldap, $sri);
|
||||||
|
|
||||||
|
$accountDN = $allValues[0]['dn'];
|
||||||
|
$uid = $allValues[0][static::USER_ATTR][0];
|
||||||
|
$objectClasses = $allValues[0]['objectclass'];
|
||||||
|
|
||||||
|
unset($objectClasses['count']);
|
||||||
|
|
||||||
|
if(!in_array(static::SCHEMA,$objectClasses) && !in_array(strtolower(static::SCHEMA),$objectClasses))
|
||||||
|
{
|
||||||
|
$objectClasses[] = static::SCHEMA;
|
||||||
|
$newData['objectclass'] = $objectClasses;
|
||||||
|
}
|
||||||
|
|
||||||
|
sort($_mailAlternateAddress);
|
||||||
|
sort($_mailForwardingAddress);
|
||||||
|
|
||||||
|
$newData[static::MAIL_ATTR] = $_mailLocalAddress;
|
||||||
|
// does schema have explicit alias attribute
|
||||||
|
if (static::ALIAS_ATTR)
|
||||||
|
{
|
||||||
|
self::setAttributePrefix($newData[static::ALIAS_ATTR], $_mailAlternateAddress, static::ALIAS_PREFIX);
|
||||||
|
|
||||||
|
// all email must be stored as alias for suse
|
||||||
|
if (static::REQUIRE_MAIL_AS_ALIAS && !in_array($_mailLocalAddress,(array)$_mailAlternateAddress))
|
||||||
|
{
|
||||||
|
self::setAttributePrefix($newData[static::ALIAS_ATTR], $_mailLocalAddress, static::ALIAS_PREFIX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// or de we add them - if existing - to mail attr
|
||||||
|
elseif ($_mailAlternateAddress)
|
||||||
|
{
|
||||||
|
self::setAttributePrefix($newData[static::MAIL_ATTR], $_mailAlternateAddress, static::ALIAS_PREFIX);
|
||||||
|
}
|
||||||
|
// does schema support to store forwards
|
||||||
|
if (static::FORWARD_ATTR)
|
||||||
|
{
|
||||||
|
self::setAttributePrefix($newData[static::FORWARD_ATTR], $_mailForwardingAddress, static::FORWARD_PREFIX);
|
||||||
|
}
|
||||||
|
// does schema support only forwarding incomming mail
|
||||||
|
if (static::FORWARD_ONLY_ATTR)
|
||||||
|
{
|
||||||
|
self::setAttributePrefix($newData[static::FORWARD_ONLY_ATTR],
|
||||||
|
$_deliveryMode ? (static::FORWARD_ONLY ? static::FORWARD_ONLY : 'forwardOnly') : array());
|
||||||
|
}
|
||||||
|
// does schema support an explicit mailbox name --> set it with $uid@$domain
|
||||||
|
if (static::MAILBOX_ATTR && empty($allValues[0][static::MAILBOX_ATTR][0]))
|
||||||
|
{
|
||||||
|
$newData[static::MAILBOX_ATTR] = $this->mailbox_addr(array(
|
||||||
|
'account_id' => $_uidnumber,
|
||||||
|
'account_lid' => $uid,
|
||||||
|
'account_email' => $_mailLocalAddress,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
if (static::QUOTA_ATTR)
|
||||||
|
{
|
||||||
|
self::setAttributePrefix($newData[static::QUOTA_ATTR],
|
||||||
|
(int)$_quota > 0 ? (int)$_quota*static::QUOTA_FACTOR : array(), static::QUOTA_PREFIX);
|
||||||
|
}
|
||||||
|
// does schema support enabling/disabling mail via attribute
|
||||||
|
if (static::MAIL_ENABLE_ATTR)
|
||||||
|
{
|
||||||
|
$newData[static::MAIL_ENABLE_ATTR] = $_accountStatus ?
|
||||||
|
(static::MAIL_ENABLED == self::MAIL_ENABLED_USE_MAIL ? $_mailLocalAddress : static::MAIL_ENABLED) : array();
|
||||||
|
}
|
||||||
|
// if we have no mail-enabled attribute, but require primary mail in aliases-attr
|
||||||
|
// we do NOT write aliases, if mail is not enabled
|
||||||
|
if (!$_accountStatus && !static::MAIL_ENABLE_ATTR && static::REQUIRE_MAIL_AS_ALIAS)
|
||||||
|
{
|
||||||
|
$newData[static::ALIAS_ATTR] = array();
|
||||||
|
}
|
||||||
|
// does schema support an explicit mailbox name --> set it, $_setMailbox is given
|
||||||
|
if (static::MAILBOX_ATTR && $_setMailbox)
|
||||||
|
{
|
||||||
|
$newData[static::MAILBOX_ATTR] = $_setMailbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addAccountExtra(array('location' => 'setUserData'), $allValues[0], $newData);
|
||||||
|
|
||||||
|
if ($this->debug) error_log(__METHOD__.'('.array2string(func_get_args()).") --> ldap_mod_replace(,'$accountDN',".array2string($newData).')');
|
||||||
|
|
||||||
|
return ldap_mod_replace($ldap, $accountDN, $newData);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saves the forwarding information
|
||||||
|
*
|
||||||
|
* @param int $_accountID
|
||||||
|
* @param string $_forwardingAddress
|
||||||
|
* @param string $_keepLocalCopy 'yes'
|
||||||
|
* @return boolean true on success, false on error writing to ldap
|
||||||
|
*/
|
||||||
|
function saveSMTPForwarding($_accountID, $_forwardingAddress, $_keepLocalCopy)
|
||||||
|
{
|
||||||
|
$ds = $this->getLdapConnection();
|
||||||
|
if (static::USERID_ATTR)
|
||||||
|
{
|
||||||
|
$filter = '(&'.static::USER_FILTER.'('.static::USERID_ATTR.'='.(int)$_accountID.'))';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$uid = $GLOBALS['egw']->accounts->id2name($_accountID);
|
||||||
|
$filter = '(&'.static::USER_FILTER.'('.static::USER_ATTR.'='.Api\Ldap::quote($uid).'))';
|
||||||
|
}
|
||||||
|
$attributes = array('dn', static::FORWARD_ATTR, 'objectclass');
|
||||||
|
if (static::FORWARD_ONLY_ATTR)
|
||||||
|
{
|
||||||
|
$attributes[] = static::FORWARD_ONLY_ATTR;
|
||||||
|
}
|
||||||
|
$sri = ldap_search($ds, $this->search_base, $filter, $attributes);
|
||||||
|
|
||||||
|
if ($sri)
|
||||||
|
{
|
||||||
|
$newData = array();
|
||||||
|
$allValues = ldap_get_entries($ds, $sri);
|
||||||
|
$objectClasses = $allValues[0]['objectclass'];
|
||||||
|
$newData['objectclass'] = $allValues[0]['objectclass'];
|
||||||
|
|
||||||
|
unset($newData['objectclass']['count']);
|
||||||
|
|
||||||
|
if(!in_array(static::SCHEMA,$objectClasses))
|
||||||
|
{
|
||||||
|
$newData['objectclass'][] = static::SCHEMA;
|
||||||
|
}
|
||||||
|
if (static::FORWARD_ATTR)
|
||||||
|
{
|
||||||
|
// copy all non-forward data (different prefix) to newData, all existing forwards to $forwards
|
||||||
|
$newData[static::FORWARD_ATTR] = $allValues[0][static::FORWARD_ATTR];
|
||||||
|
$forwards = self::getAttributePrefix($newData[static::FORWARD_ATTR], static::FORWARD_PREFIX);
|
||||||
|
|
||||||
|
if(!empty($_forwardingAddress))
|
||||||
|
{
|
||||||
|
if($forwards)
|
||||||
|
{
|
||||||
|
if (!is_array($_forwardingAddress))
|
||||||
|
{
|
||||||
|
// replace the first forwarding address (old behavior)
|
||||||
|
$forwards[0] = $_forwardingAddress;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// replace all forwarding Addresses
|
||||||
|
$forwards = $_forwardingAddress;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$forwards = (array)$_forwardingAddress;
|
||||||
|
}
|
||||||
|
if (static::FORWARD_ONLY_ATTR)
|
||||||
|
{
|
||||||
|
self::setAttributePrefix($newData[static::FORWARD_ONLY_ATTR],
|
||||||
|
$_keepLocalCopy == 'yes' ? array() : static::FORWARD_ONLY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$forwards = array();
|
||||||
|
}
|
||||||
|
// merge in again all new set forwards incl. opt. prefix
|
||||||
|
self::setAttributePrefix($newData[static::FORWARD_ATTR], $forwards, static::FORWARD_PREFIX);
|
||||||
|
}
|
||||||
|
if ($this->debug) error_log(__METHOD__.'('.array2string(func_get_args()).") --> ldap_mod_replace(,'{$allValues[0]['dn']}',".array2string($newData).')');
|
||||||
|
|
||||||
|
return ldap_modify ($ds, $allValues[0]['dn'], $newData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get configured mailboxes of a domain
|
||||||
|
*
|
||||||
|
* @param boolean $return_inactive return mailboxes NOT marked as accountStatus=active too
|
||||||
|
* @return array uid => name-part of mailMessageStore
|
||||||
|
*/
|
||||||
|
function getMailboxes($return_inactive)
|
||||||
|
{
|
||||||
|
$ds = $this->getLdapConnection();
|
||||||
|
$filter = array('('.static::MAIL_ATTR.'=*)');
|
||||||
|
$attrs = array(static::USER_ATTR, static::MAIL_ATTR);
|
||||||
|
if (static::MAILBOX_ATTR)
|
||||||
|
{
|
||||||
|
$filter[] = '('.static::MAILBOX_ATTR.'=*)';
|
||||||
|
$attrs[] = static::MAILBOX_ATTR;
|
||||||
|
}
|
||||||
|
if (!$return_inactive && static::MAIL_ENABLE_ATTR)
|
||||||
|
{
|
||||||
|
$filter[] = '('.static::MAIL_ENABLE_ATTR.'='.static::MAIL_ENABLED.')';
|
||||||
|
}
|
||||||
|
if (count($filter) > 1)
|
||||||
|
{
|
||||||
|
$filter = '(&'.implode('', $filter).')';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$filter = $filter[0];
|
||||||
|
}
|
||||||
|
if (!($sr = @ldap_search($ds, $this->search_base, $filter, $attrs)))
|
||||||
|
{
|
||||||
|
//error_log("Error ldap_search(\$ds, '$base', '$filter')!");
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
$entries = ldap_get_entries($ds, $sr);
|
||||||
|
|
||||||
|
unset($entries['count']);
|
||||||
|
|
||||||
|
$mailboxes = array();
|
||||||
|
foreach($entries as $entry)
|
||||||
|
{
|
||||||
|
if ($entry[static::USER_ATTR][0] == 'anonymous') continue; // anonymous is never a mail-user!
|
||||||
|
list($mailbox) = explode('@', $entry[static::MAILBOX_ATTR ? static::MAILBOX_ATTR : static::MAIL_ATTR][0]);
|
||||||
|
$mailboxes[$entry[static::USER_ATTR][0]] = $mailbox;
|
||||||
|
}
|
||||||
|
return $mailboxes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set values in a given LDAP attribute using an optional prefix
|
||||||
|
*
|
||||||
|
* @param array &$attribute on return array with values set and existing values preseved
|
||||||
|
* @param string|array $values value(s) to set
|
||||||
|
* @param string $prefix ='' prefix to use or ''
|
||||||
|
*/
|
||||||
|
protected static function setAttributePrefix(&$attribute, $values, $prefix='')
|
||||||
|
{
|
||||||
|
//$attribute_in = $attribute;
|
||||||
|
if (empty($attribute)) $attribute = array();
|
||||||
|
if (!is_array($attribute)) $attribute = (array)$attribute;
|
||||||
|
|
||||||
|
foreach((array)$values as $value)
|
||||||
|
{
|
||||||
|
$attribute[] = $prefix.$value;
|
||||||
|
}
|
||||||
|
//error_log(__METHOD__."(".array2string($attribute_in).", ".array2string($values).", '$prefix') attribute=".array2string($attribute));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get values having an optional prefix from a given LDAP attribute
|
||||||
|
*
|
||||||
|
* @param array &$attribute only "count" and prefixed values get removed, get's reindexed, if values have been removed
|
||||||
|
* @param string $prefix ='' prefix to use or ''
|
||||||
|
* @param boolean $remove =true remove returned values from $attribute
|
||||||
|
* @return array with values (prefix removed) or array() if nothing found
|
||||||
|
*/
|
||||||
|
protected static function getAttributePrefix(&$attribute, $prefix='', $remove=true)
|
||||||
|
{
|
||||||
|
//$attribute_in = $attribute;
|
||||||
|
$values = array();
|
||||||
|
|
||||||
|
if (isset($attribute))
|
||||||
|
{
|
||||||
|
unset($attribute['count']);
|
||||||
|
|
||||||
|
foreach($attribute as $key => $value)
|
||||||
|
{
|
||||||
|
if (!$prefix || stripos($value, $prefix) === 0)
|
||||||
|
{
|
||||||
|
if ($remove) unset($attribute[$key]);
|
||||||
|
$values[] = substr($value, strlen($prefix));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// reindex $attribute, if neccessary
|
||||||
|
if ($values && $attribute) $attribute = array_values($attribute);
|
||||||
|
}
|
||||||
|
//error_log(__METHOD__."(".array2string($attribute_in).", '$prefix', $remove) attribute=".array2string($attribute).' returning '.array2string($values));
|
||||||
|
return $values;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return LDAP connection
|
||||||
|
*/
|
||||||
|
protected function getLdapConnection()
|
||||||
|
{
|
||||||
|
return Api\Ldap::factory();
|
||||||
|
}
|
||||||
|
}
|
87
api/src/Mail/Smtp/Mandriva.php
Normal file
87
api/src/Mail/Smtp/Mandriva.php
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Postfix with Mandriva mailAccount schema
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @copyright (c) 2010-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Smtp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Postfix with Mandriva mailAccount schema
|
||||||
|
*/
|
||||||
|
class Mandriva extends Ldap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, forward
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|forward';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of schema, has to be in the right case!
|
||||||
|
*/
|
||||||
|
const SCHEMA = 'mailAccount';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLE_ATTR = 'mailenable';
|
||||||
|
/**
|
||||||
|
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLED = 'OK';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for aliases OR false to use mail
|
||||||
|
*/
|
||||||
|
const ALIAS_ATTR = 'mailalias';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Primary mail address required as an alias too: true or false
|
||||||
|
*/
|
||||||
|
const REQUIRE_MAIL_AS_ALIAS=false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for forwards OR false if not possible
|
||||||
|
*/
|
||||||
|
const FORWARD_ATTR = 'maildrop';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to only forward mail, OR false if not available
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY_ATTR = false;
|
||||||
|
/**
|
||||||
|
* Attribute value to only forward mail
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for mailbox, to which mail gets delivered OR false if not supported
|
||||||
|
*/
|
||||||
|
const MAILBOX_ATTR = 'mailbox';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for quota limit of user in MB
|
||||||
|
*/
|
||||||
|
const QUOTA_ATTR = 'mailuserquota';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log all LDAP writes / actions to error_log
|
||||||
|
*/
|
||||||
|
var $debug = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return description for EMailAdmin
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function description()
|
||||||
|
{
|
||||||
|
return 'LDAP (Mandriva '.static::SCHEMA.')';
|
||||||
|
}
|
||||||
|
}
|
69
api/src/Mail/Smtp/Oldqmailuser.php
Normal file
69
api/src/Mail/Smtp/Oldqmailuser.php
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Postfix with old qmailUser schema
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @copyright (c) 2010-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Smtp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Postfix with old qmailUser schema
|
||||||
|
*/
|
||||||
|
class Oldqmailuser extends Ldap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, forward
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|forward';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of schema, has to be in the right case!
|
||||||
|
*/
|
||||||
|
const SCHEMA = 'qmailUser';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLE_ATTR = 'accountstatus';
|
||||||
|
/**
|
||||||
|
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLED = 'active';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for aliases OR false to use mail
|
||||||
|
*/
|
||||||
|
const ALIAS_ATTR = 'mailalternateaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Primary mail address required as an alias too: true or false
|
||||||
|
*/
|
||||||
|
const REQUIRE_MAIL_AS_ALIAS=false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for forwards OR false if not possible
|
||||||
|
*/
|
||||||
|
const FORWARD_ATTR = 'mailforwardingaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to only forward mail, OR false if not available
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY_ATTR = 'deliverymode';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for mailbox, to which mail gets delivered OR false if not supported
|
||||||
|
*/
|
||||||
|
const MAILBOX_ATTR = 'mailmessagestore';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for quota limit of user in MB
|
||||||
|
*/
|
||||||
|
const QUOTA_ATTR = 'mailquota';
|
||||||
|
}
|
79
api/src/Mail/Smtp/Qmail.php
Normal file
79
api/src/Mail/Smtp/Qmail.php
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Postfix with new qmailUser schema
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @copyright (c) 2013-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Smtp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Postfix with new qmailUser schema (mailQuotaSize instead of mailQuota)
|
||||||
|
*/
|
||||||
|
class Qmail extends Ldap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, forward
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|forward';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of schema, has to be in the right case!
|
||||||
|
*/
|
||||||
|
const SCHEMA = 'qmailUser';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLE_ATTR = 'accountstatus';
|
||||||
|
/**
|
||||||
|
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLED = 'active';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for aliases OR false to use mail
|
||||||
|
*/
|
||||||
|
const ALIAS_ATTR = 'mailalternateaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Primary mail address required as an alias too: true or false
|
||||||
|
*/
|
||||||
|
const REQUIRE_MAIL_AS_ALIAS=false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for forwards OR false if not possible
|
||||||
|
*/
|
||||||
|
const FORWARD_ATTR = 'mailforwardingaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to only forward mail, OR false if not available
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY_ATTR = 'deliverymode';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for mailbox, to which mail gets delivered OR false if not supported
|
||||||
|
*/
|
||||||
|
const MAILBOX_ATTR = 'mailmessagestore';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for quota limit of user in MB
|
||||||
|
*/
|
||||||
|
const QUOTA_ATTR = 'mailquotasize';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return description for EMailAdmin
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function description()
|
||||||
|
{
|
||||||
|
return 'LDAP (new '.static::SCHEMA.')';
|
||||||
|
}
|
||||||
|
}
|
382
api/src/Mail/Smtp/Sql.php
Normal file
382
api/src/Mail/Smtp/Sql.php
Normal file
@ -0,0 +1,382 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: SMTP configuration / mail accounts via SQL
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @copyright (c) 2012-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Smtp;
|
||||||
|
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SMTP configuration / mail accounts via SQL
|
||||||
|
*/
|
||||||
|
class Sql extends Mail\Smtp
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Label shown in EMailAdmin
|
||||||
|
*/
|
||||||
|
const DESCRIPTION = 'SQL';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, forward
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|forward';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to global db object
|
||||||
|
*
|
||||||
|
* @var Api\Db
|
||||||
|
*/
|
||||||
|
protected $db;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of table
|
||||||
|
*/
|
||||||
|
const TABLE = 'egw_mailaccounts';
|
||||||
|
/**
|
||||||
|
* Name of app our table belongs to
|
||||||
|
*/
|
||||||
|
const APP = 'emailadmin';
|
||||||
|
/**
|
||||||
|
* Values for mail_type column
|
||||||
|
*
|
||||||
|
* enabled and delivery must have smaller values then alias, forward or mailbox (getUserData depend on it)!
|
||||||
|
*/
|
||||||
|
const TYPE_ENABLED = 0;
|
||||||
|
const TYPE_DELIVERY = 1;
|
||||||
|
const TYPE_QUOTA = 2;
|
||||||
|
const TYPE_ALIAS = 3;
|
||||||
|
const TYPE_FORWARD = 4;
|
||||||
|
const TYPE_MAILBOX = 5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param string $defaultDomain =null
|
||||||
|
*/
|
||||||
|
function __construct($defaultDomain=null)
|
||||||
|
{
|
||||||
|
parent::__construct($defaultDomain);
|
||||||
|
|
||||||
|
$this->db = $GLOBALS['egw']->db;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all email addresses of an account
|
||||||
|
*
|
||||||
|
* @param string $_accountName
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getAccountEmailAddress($_accountName)
|
||||||
|
{
|
||||||
|
$emailAddresses = parent::getAccountEmailAddress($_accountName);
|
||||||
|
|
||||||
|
if (($account_id = $this->accounts->name2id($_accountName, 'account_lid', 'u')))
|
||||||
|
{
|
||||||
|
foreach($this->db->select(self::TABLE, 'mail_value', array(
|
||||||
|
'account_id' => $account_id,
|
||||||
|
'mail_type' => self::TYPE_ALIAS,
|
||||||
|
), __LINE__, __FILE__, false, 'ORDER BY mail_value', self::APP) as $row)
|
||||||
|
{
|
||||||
|
$emailAddresses[] = array (
|
||||||
|
'name' => $emailAddresses[0]['name'],
|
||||||
|
'address' => $row['mail_value'],
|
||||||
|
'type' => 'alternate',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($this->debug) error_log(__METHOD__."('$_accountName') returning ".array2string($emailAddresses));
|
||||||
|
|
||||||
|
return $emailAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the data of a given user
|
||||||
|
*
|
||||||
|
* Multiple accounts may match, if an email address is specified.
|
||||||
|
* In that case only mail routing fields "uid", "mailbox" and "forward" contain values
|
||||||
|
* from all accounts!
|
||||||
|
*
|
||||||
|
* @param int|string $user numerical account-id, account-name or email address
|
||||||
|
* @param boolean $match_uid_at_domain =true true: uid@domain matches, false only an email or alias address matches
|
||||||
|
* @return array with values for keys 'mailLocalAddress', 'mailAlternateAddress' (array), 'mailForwardingAddress' (array),
|
||||||
|
* 'accountStatus' ("active"), 'quotaLimit' and 'deliveryMode' ("forwardOnly")
|
||||||
|
*/
|
||||||
|
function getUserData($user, $match_uid_at_domain=false)
|
||||||
|
{
|
||||||
|
$userData = array();
|
||||||
|
|
||||||
|
if (is_numeric($user) && $this->accounts->exists($user))
|
||||||
|
{
|
||||||
|
$account_id = $user;
|
||||||
|
}
|
||||||
|
elseif (strpos($user, '@') === false)
|
||||||
|
{
|
||||||
|
$account_id = $this->accounts->name2id($user, 'account_lid', 'u');
|
||||||
|
}
|
||||||
|
else // email address
|
||||||
|
{
|
||||||
|
// check with primary email address
|
||||||
|
if (($account_id = $this->accounts->name2id($user, 'account_email')))
|
||||||
|
{
|
||||||
|
$account_id = array($account_id);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$account_id = array();
|
||||||
|
}
|
||||||
|
// always allow username@domain
|
||||||
|
list($account_lid) = explode('@', $user);
|
||||||
|
if ($match_uid_at_domain && ($id = $this->accounts->name2id($account_lid, 'account_lid')) && !in_array($id, $account_id))
|
||||||
|
{
|
||||||
|
$account_id[] = $id;
|
||||||
|
}
|
||||||
|
foreach($this->db->select(self::TABLE, 'account_id', array(
|
||||||
|
'mail_type' => self::TYPE_ALIAS,
|
||||||
|
'mail_value' => $user,
|
||||||
|
), __LINE__, __FILE__, false, '', self::APP) as $row)
|
||||||
|
{
|
||||||
|
if (!in_array($row['account_id'], $account_id)) $account_id[] = $row['account_id'];
|
||||||
|
}
|
||||||
|
//error_log(__METHOD__."('$user') account_id=".array2string($account_id));
|
||||||
|
}
|
||||||
|
if ($account_id)
|
||||||
|
{
|
||||||
|
if (!is_array($account_id))
|
||||||
|
{
|
||||||
|
$userData['mailLocalAddress'] = $this->accounts->id2name($account_id, 'account_email');
|
||||||
|
}
|
||||||
|
$enabled = $forwardOnly = array();
|
||||||
|
foreach($this->db->select(self::TABLE, '*', array(
|
||||||
|
'account_id' => $account_id,
|
||||||
|
), __LINE__, __FILE__, false, 'ORDER BY mail_type,mail_value', self::APP) as $row)
|
||||||
|
{
|
||||||
|
switch($row['mail_type'])
|
||||||
|
{
|
||||||
|
case self::TYPE_ENABLED:
|
||||||
|
$userData['accountStatus'] = $row['mail_value'];
|
||||||
|
$enabled[$row['account_id']] = $row['mail_value'] == self::MAIL_ENABLED;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case self::TYPE_DELIVERY:
|
||||||
|
$userData['deliveryMode'] = !strcasecmp($row['mail_value'], self::FORWARD_ONLY) ? Mail\Smtp::FORWARD_ONLY : '';
|
||||||
|
$forwardOnly[$row['account_id']] = !strcasecmp($row['mail_value'], self::FORWARD_ONLY);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case self::TYPE_QUOTA:
|
||||||
|
$userData['quotaLimit'] = $row['mail_value'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case self::TYPE_ALIAS:
|
||||||
|
$userData['mailAlternateAddress'][] = $row['mail_value'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case self::TYPE_FORWARD:
|
||||||
|
$userData['mailForwardingAddress'][] = $row['mail_value'];
|
||||||
|
if ($row['account_id'] < 0 || $enabled[$row['account_id']])
|
||||||
|
{
|
||||||
|
$userData['forward'][] = $row['mail_value'];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case self::TYPE_MAILBOX:
|
||||||
|
$userData['mailMessageStore'] = $row['mail_value'];
|
||||||
|
//error_log(__METHOD__."('$user') row=".array2string($row).', enabled[$row[account_id]]='.array2string($enabled[$row['account_id']]).', forwardOnly[$row[account_id]]='.array2string($forwardOnly[$row['account_id']]));
|
||||||
|
if ($row['account_id'] > 0 && $enabled[$row['account_id']] && !$forwardOnly[$row['account_id']])
|
||||||
|
{
|
||||||
|
$userData['uid'][] = $this->accounts->id2name($row['account_id'], 'account_lid');
|
||||||
|
$userData['mailbox'][] = $row['mail_value'];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if query by email-address (not a regular call from fmail)
|
||||||
|
if (is_array($account_id))
|
||||||
|
{
|
||||||
|
// add group-members for groups as forward (that way we dont need to store&update them)
|
||||||
|
foreach($account_id as $id)
|
||||||
|
{
|
||||||
|
if ($id < 0 && ($members = $this->accounts->members($id, true)))
|
||||||
|
{
|
||||||
|
foreach($members as $member)
|
||||||
|
{
|
||||||
|
if (($email = $this->accounts->id2name($member, 'account_email')) && !in_array($email, (array)$userData['forward']))
|
||||||
|
{
|
||||||
|
$userData['forward'][] = $email;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($this->debug) error_log(__METHOD__."('$user') returning ".array2string($userData));
|
||||||
|
|
||||||
|
return $userData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the data of a given user
|
||||||
|
*
|
||||||
|
* @param int $_uidnumber numerical user-id
|
||||||
|
* @param array $_mailAlternateAddress
|
||||||
|
* @param array $_mailForwardingAddress
|
||||||
|
* @param string $_deliveryMode
|
||||||
|
* @param string $_accountStatus
|
||||||
|
* @param string $_mailLocalAddress
|
||||||
|
* @param int $_quota in MB
|
||||||
|
* @param boolean $_forwarding_only =false true: store only forwarding info, used internally by saveSMTPForwarding
|
||||||
|
* @param string $_setMailbox =null used only for account migration
|
||||||
|
* @return boolean true on success, false on error writing to ldap
|
||||||
|
*/
|
||||||
|
function setUserData($_uidnumber, array $_mailAlternateAddress, array $_mailForwardingAddress, $_deliveryMode,
|
||||||
|
$_accountStatus, $_mailLocalAddress, $_quota, $_forwarding_only=false, $_setMailbox=null)
|
||||||
|
{
|
||||||
|
if ($this->debug) error_log(__METHOD__."($_uidnumber, ".array2string($_mailAlternateAddress).', '.array2string($_mailForwardingAddress).", '$_deliveryMode', '$_accountStatus', '$_mailLocalAddress', $_quota, forwarding_only=".array2string($_forwarding_only).') '.function_backtrace());
|
||||||
|
|
||||||
|
if (!$_forwarding_only && $this->accounts->id2name($_uidnumber, 'account_email') !== $_mailLocalAddress)
|
||||||
|
{
|
||||||
|
$account = $this->accounts->read($_uidnumber);
|
||||||
|
$account['account_email'] = $_mailLocalAddress;
|
||||||
|
$this->accounts->save($account);
|
||||||
|
}
|
||||||
|
$flags = array(
|
||||||
|
self::TYPE_DELIVERY => $_deliveryMode,
|
||||||
|
self::TYPE_ENABLED => $_accountStatus,
|
||||||
|
self::TYPE_QUOTA => $_quota,
|
||||||
|
);
|
||||||
|
$where = array('account_id' => $_uidnumber);
|
||||||
|
if ($_forwarding_only) $where['mail_type'] = array(self::TYPE_FORWARD, self::TYPE_DELIVERY);
|
||||||
|
// find all invalid values: either delete or update them
|
||||||
|
$delete_ids = array();
|
||||||
|
foreach($this->db->select(self::TABLE, '*', $where, __LINE__, __FILE__, false, '', self::APP) as $row)
|
||||||
|
{
|
||||||
|
switch($row['mail_type'])
|
||||||
|
{
|
||||||
|
case self::TYPE_ALIAS:
|
||||||
|
$new_addresses =& $_mailAlternateAddress;
|
||||||
|
// fall-throught
|
||||||
|
case self::TYPE_FORWARD:
|
||||||
|
if ($row['mail_type'] == self::TYPE_FORWARD) $new_addresses =& $_mailForwardingAddress;
|
||||||
|
if (($key = array_search($row['mail_value'], $new_addresses)) === false)
|
||||||
|
{
|
||||||
|
$delete_ids[] = $row['mail_id'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
unset($new_addresses[$key]); // no need to store
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case self::TYPE_MAILBOX:
|
||||||
|
$mailbox = $row['mail_value'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case self::TYPE_QUOTA:
|
||||||
|
case self::TYPE_DELIVERY:
|
||||||
|
case self::TYPE_ENABLED:
|
||||||
|
//error_log(__METHOD__.": ".__LINE__." row=".array2string($row).", flags['$row[mail_type]']=".array2string($flags[$row['mail_type']]));
|
||||||
|
if ($row['mail_value'] != $flags[$row['mail_type']])
|
||||||
|
{
|
||||||
|
if ($flags[$row['mail_type']])
|
||||||
|
{
|
||||||
|
$this->db->update(self::TABLE, array(
|
||||||
|
'mail_value' => $flags[$row['mail_type']],
|
||||||
|
), array(
|
||||||
|
'mail_id' => $row['mail_id'],
|
||||||
|
), __LINE__, __FILE__, self::APP);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$delete_ids[] = $row['mail_id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($flags[$row['mail_type']]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($delete_ids)
|
||||||
|
{
|
||||||
|
$this->db->delete(self::TABLE, array('mail_id' => $delete_ids), __LINE__, __FILE__, self::APP);
|
||||||
|
}
|
||||||
|
// set mailbox address, if explicitly requested by $_setMailbox parameter
|
||||||
|
if ($_setMailbox)
|
||||||
|
{
|
||||||
|
$flags[self::TYPE_MAILBOX] = $_setMailbox;
|
||||||
|
}
|
||||||
|
// set mailbox address, if not yet set
|
||||||
|
elseif (!$_forwarding_only && empty($mailbox))
|
||||||
|
{
|
||||||
|
$flags[self::TYPE_MAILBOX] = $this->mailbox_addr(array(
|
||||||
|
'account_id' => $_uidnumber,
|
||||||
|
'account_lid' => $this->accounts->id2name($_uidnumber, 'account_lid'),
|
||||||
|
'account_email' => $_mailLocalAddress,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
// store all new values
|
||||||
|
foreach($flags+array(
|
||||||
|
self::TYPE_ALIAS => $_mailAlternateAddress,
|
||||||
|
self::TYPE_FORWARD => $_mailForwardingAddress,
|
||||||
|
) as $type => $values)
|
||||||
|
{
|
||||||
|
if ($values && (!$_forwarding_only || in_array($type, array(self::TYPE_FORWARD, self::TYPE_DELIVERY))))
|
||||||
|
{
|
||||||
|
foreach((array)$values as $value)
|
||||||
|
{
|
||||||
|
$this->db->insert(self::TABLE, array(
|
||||||
|
'account_id' => $_uidnumber,
|
||||||
|
'mail_type' => $type,
|
||||||
|
'mail_value' => $value,
|
||||||
|
), false, __LINE__, __FILE__, self::APP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get configured mailboxes of a domain
|
||||||
|
*
|
||||||
|
* @param boolean $return_inactive return mailboxes NOT marked as accountStatus=active too
|
||||||
|
* @return array uid => name-part of mailMessageStore
|
||||||
|
*/
|
||||||
|
function getMailboxes($return_inactive)
|
||||||
|
{
|
||||||
|
$join = 'JOIN '.accounts_sql::TABLE.' ON '.self::TABLE.'.account_id='.accounts_sql::TABLE.'.account_id';
|
||||||
|
if (!$return_inactive)
|
||||||
|
{
|
||||||
|
$join .= ' JOIN '.self::TABLE.' active ON active.account_id='.self::TABLE.'.account_id AND active.mail_type='.self::TYPE_ENABLED;
|
||||||
|
}
|
||||||
|
$mailboxes = array();
|
||||||
|
foreach($this->db->select(self::TABLE, 'account_lid AS uid,'.self::TABLE.'.mail_value AS mailbox',
|
||||||
|
self::TABLE.'.mail_type='.self::TYPE_MAILBOX,
|
||||||
|
__LINE__, __FILE__, false, 'ORDER BY account_lid', self::APP, 0, $join) as $row)
|
||||||
|
{
|
||||||
|
if ($row['uid'] == 'anonymous') continue; // anonymous is never a mail-user!
|
||||||
|
list($mailbox) = explode('@', $row['mailbox']);
|
||||||
|
$mailboxes[$row['uid']] = $mailbox;
|
||||||
|
}
|
||||||
|
return $mailboxes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook called on account deletion
|
||||||
|
*
|
||||||
|
* @param array $_hookValues values for keys 'account_lid', 'account_id'
|
||||||
|
* @return boolean true on success, false on error
|
||||||
|
*/
|
||||||
|
function deleteAccount($_hookValues)
|
||||||
|
{
|
||||||
|
$this->db->delete(self::TABLE, array('account_id' => $_hookValues['account_id']), __LINE__, __FILE__);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
74
api/src/Mail/Smtp/Suse.php
Normal file
74
api/src/Mail/Smtp/Suse.php
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: SUSE Mailserver support Postfix MTA
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @copyright (c) 2009-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Smtp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Support for Postfix with suse-mailserver schemas
|
||||||
|
*
|
||||||
|
* Used in SLES and openSUSE 10+
|
||||||
|
*/
|
||||||
|
class Suse extends Ldap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, forward
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|forward';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of schema, has to be in the right case
|
||||||
|
*/
|
||||||
|
const SCHEMA = 'suseMailRecipient';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLE_ATTR = false;
|
||||||
|
/**
|
||||||
|
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLED = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for aliases OR false to use mail
|
||||||
|
*/
|
||||||
|
const ALIAS_ATTR = 'susemailacceptaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Primary mail address required as an alias too: true or false
|
||||||
|
*/
|
||||||
|
const REQUIRE_MAIL_AS_ALIAS = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for forwards OR false if not possible
|
||||||
|
*/
|
||||||
|
const FORWARD_ATTR = 'susemailforwardaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to only forward mail, OR false if not available
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY_ATTR = false;
|
||||||
|
/**
|
||||||
|
* Attribute value to only forward mail
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for mailbox, to which mail gets delivered OR false if not supported
|
||||||
|
*/
|
||||||
|
const MAILBOX_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log all LDAP writes / actions to error_log
|
||||||
|
*/
|
||||||
|
var $debug = false;
|
||||||
|
}
|
110
api/src/Mail/Smtp/Univention.php
Normal file
110
api/src/Mail/Smtp/Univention.php
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: Postfix with Univention mailAccount schema
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @copyright (c) 2014-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail\Smtp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Postfix with Univention mailAccount schema
|
||||||
|
*/
|
||||||
|
class Univention extends Ldap
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Capabilities of this class (pipe-separated): default, forward
|
||||||
|
*/
|
||||||
|
const CAPABILITIES = 'default|forward';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of schema, has to be in the right case!
|
||||||
|
*/
|
||||||
|
const SCHEMA = 'univentionMail';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute with mail address
|
||||||
|
*/
|
||||||
|
const MAIL_ATTR = 'mailprimaryaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLE_ATTR = 'mailprimaryaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
|
||||||
|
*/
|
||||||
|
const MAIL_ENABLED = self::MAIL_ENABLED_USE_MAIL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for aliases OR false to use mail
|
||||||
|
*/
|
||||||
|
const ALIAS_ATTR = 'mailalternativeaddress';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Primary mail address required as an alias too: true or false
|
||||||
|
*/
|
||||||
|
const REQUIRE_MAIL_AS_ALIAS=false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for forwards OR false if not possible
|
||||||
|
*/
|
||||||
|
const FORWARD_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute to only forward mail, OR false if not available
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY_ATTR = false;
|
||||||
|
/**
|
||||||
|
* Attribute value to only forward mail
|
||||||
|
*/
|
||||||
|
const FORWARD_ONLY = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for mailbox, to which mail gets delivered OR false if not supported
|
||||||
|
*/
|
||||||
|
const MAILBOX_ATTR = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attribute for quota limit of user in MB
|
||||||
|
*/
|
||||||
|
const QUOTA_ATTR = 'univentionmailuserquota';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal quota in MB is multiplicated with this factor before stored in LDAP
|
||||||
|
*/
|
||||||
|
const QUOTA_FACTOR = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log all LDAP writes / actions to error_log
|
||||||
|
*/
|
||||||
|
var $debug = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add additional values to addAccount
|
||||||
|
*
|
||||||
|
* @param array $_hookValues
|
||||||
|
* @param array $allValues
|
||||||
|
* @param array $newData
|
||||||
|
*/
|
||||||
|
function addAccountExtra(array $_hookValues, array $allValues, array &$newData)
|
||||||
|
{
|
||||||
|
unset($_hookValues); // not used, but required by function signature
|
||||||
|
|
||||||
|
if (empty($allValues['univentionmailhomeserver'][0]) && $newData[self::MAIL_ENABLE_ATTR])
|
||||||
|
{
|
||||||
|
$newData['univentionMailHomeServer'] = $this->host;
|
||||||
|
|
||||||
|
if (strpos($newData['univentionMailHomeServer'], '://'))
|
||||||
|
{
|
||||||
|
$newData['univentionMailHomeServer'] = parse_url($newData['univentionMailHomeServer'], PHP_URL_HOST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
115
api/src/Mail/Types.php
Normal file
115
api/src/Mail/Types.php
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware Api: some base mail functionality
|
||||||
|
*
|
||||||
|
* @link http://www.stylite.de
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
|
* @copyright (c) 2014-16 by Ralf Becker <rb@stylite.de>
|
||||||
|
* @author Stylite AG <info@stylite.de>
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api\Mail;
|
||||||
|
|
||||||
|
class Types
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get a list of supported SMTP servers
|
||||||
|
*
|
||||||
|
* Calls hook "smtp_server_types" to allow applications to supply own server-types
|
||||||
|
*
|
||||||
|
* @return array classname => label pairs
|
||||||
|
*/
|
||||||
|
static public function getSMTPServerTypes($extended=true)
|
||||||
|
{
|
||||||
|
$retData = self::server_types(true, $extended);
|
||||||
|
foreach($GLOBALS['egw']->hooks->process(array(
|
||||||
|
'location' => 'smtp_server_types',
|
||||||
|
'extended' => $extended,
|
||||||
|
), array('managementserver'), true) as $app => $data)
|
||||||
|
{
|
||||||
|
if ($data && $app != 'emailadmin') $retData += $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
uksort($retData, function($a, $b) {
|
||||||
|
/* static requires PHP5.6+ */ $prio = array( // not explicitly mentioned get 0
|
||||||
|
__NAMESPACE__.'\\Smtp' => 9,
|
||||||
|
__NAMESPACE__.'\\Smtp\\Sql' => 8,
|
||||||
|
);
|
||||||
|
return (int)$prio[$b] - (int)$prio[$a];
|
||||||
|
});
|
||||||
|
return $retData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of supported IMAP servers
|
||||||
|
*
|
||||||
|
* Calls hook "imap_server_types" to allow applications to supply own server-types
|
||||||
|
*
|
||||||
|
* @param boolean $extended =true
|
||||||
|
* @return array classname => label pairs
|
||||||
|
*/
|
||||||
|
static public function getIMAPServerTypes($extended=true)
|
||||||
|
{
|
||||||
|
$retData = self::server_types(false, $extended);
|
||||||
|
foreach($GLOBALS['egw']->hooks->process(array(
|
||||||
|
'location' => 'imap_server_types',
|
||||||
|
'extended' => $extended,
|
||||||
|
), array('managementserver'), true) as $app => $data)
|
||||||
|
{
|
||||||
|
if ($data && $app != 'emailadmin') $retData += $data;
|
||||||
|
}
|
||||||
|
uksort($retData, function($a, $b) {
|
||||||
|
/* static requires PHP5.6+ */ $prio = array( // not explicitly mentioned get 0
|
||||||
|
__NAMESPACE__.'\\Imap' => 9,
|
||||||
|
'managementserver_imap' => 8,
|
||||||
|
__NAMESPACE__.'\\Dovecot' => 7,
|
||||||
|
__NAMESPACE__.'\\Cyrus' => 6,
|
||||||
|
);
|
||||||
|
return (int)$prio[$b] - (int)$prio[$a];
|
||||||
|
});
|
||||||
|
return $retData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detect imap and smtp server plugins from EMailAdmin's inc directory
|
||||||
|
*
|
||||||
|
* @param boolean $imap =true
|
||||||
|
* @param boolean $extended =false
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected static function server_types($imap=true, $extended=false)
|
||||||
|
{
|
||||||
|
$types = array();
|
||||||
|
$prefix = $imap ? 'Imap' : 'Smtp';
|
||||||
|
foreach(scandir($dir=__DIR__.'/'.$prefix) as $file)
|
||||||
|
{
|
||||||
|
if ($file == '..')
|
||||||
|
{
|
||||||
|
$class_name = __NAMESPACE__.'\\'.$prefix;
|
||||||
|
}
|
||||||
|
elseif (substr($file, -4) == '.php' && $file != 'Iface.php')
|
||||||
|
{
|
||||||
|
$class_name = __NAMESPACE__.'\\'.$prefix.'\\'.substr($file, 0, -4);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!class_exists($class_name)) continue;
|
||||||
|
|
||||||
|
$type = array(
|
||||||
|
'classname' => $class_name,
|
||||||
|
'description' => is_callable($function=$class_name.'::description') ? call_user_func($function) : $class_name,
|
||||||
|
);
|
||||||
|
if ($imap) $type['protocol'] = 'imap';
|
||||||
|
|
||||||
|
$types[$class_name] = $extended ? $type : $type['description'];
|
||||||
|
}
|
||||||
|
//error_log(__METHOD__."(".array2string($data).") returning ".array2string($types));
|
||||||
|
return $types;
|
||||||
|
}
|
||||||
|
}
|
843
api/src/Mailer.php
Normal file
843
api/src/Mailer.php
Normal file
@ -0,0 +1,843 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* EGroupware API: Sending mail via PHPMailer
|
||||||
|
*
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @package api
|
||||||
|
* @subpackage mail
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace EGroupware\Api;
|
||||||
|
|
||||||
|
use Horde_Mime_Mail;
|
||||||
|
use Horde_Mime_Part;
|
||||||
|
use Horde_Mail_Rfc822_List;
|
||||||
|
use Horde_Mail_Exception;
|
||||||
|
use Horde_Mail_Transport_Null;
|
||||||
|
use Horde_Mime_Headers_MessageId;
|
||||||
|
use Horde_Text_Flowed;
|
||||||
|
use Horde_Stream;
|
||||||
|
use Horde_Stream_Wrapper_Combine;
|
||||||
|
use Horde_Mime_Headers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log mails to log file specified in $GLOBALS['egw_info']['server']['log_mail']
|
||||||
|
* or regular error_log for true (can be set either in DB or header.inc.php).
|
||||||
|
*
|
||||||
|
* New egw_mailer object uses Horde Mime Mail class with compatibility methods for
|
||||||
|
* old PHPMailer methods and class variable assignments.
|
||||||
|
*
|
||||||
|
* This class does NOT use anything EGroupware specific, it acts like PHPMail, but logs.
|
||||||
|
*/
|
||||||
|
class Mailer extends Horde_Mime_Mail
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Mail account used for sending mail
|
||||||
|
*
|
||||||
|
* @var Mail\Account
|
||||||
|
*/
|
||||||
|
protected $account;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Header / recipients set via Add(Address|Cc|Bcc|Replyto)
|
||||||
|
*
|
||||||
|
* @var Horde_Mail_Rfc822_List
|
||||||
|
*/
|
||||||
|
protected $to;
|
||||||
|
protected $cc;
|
||||||
|
protected $bcc;
|
||||||
|
protected $replyto;
|
||||||
|
/**
|
||||||
|
* Translates between interal Horde_Mail_Rfc822_List attributes and header names
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
static $type2header = array(
|
||||||
|
'to' => 'To',
|
||||||
|
'cc' => 'Cc',
|
||||||
|
'bcc' => 'Bcc',
|
||||||
|
'replyto' => 'Reply-To',
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor: always throw exceptions instead of echoing errors and EGw pathes
|
||||||
|
*
|
||||||
|
* @param int|Mail\Account|boolean $account =null mail account to use, default use Mail\Account::get_default($smtp=true)
|
||||||
|
* false: no NOT initialise account and set other EGroupware specific headers, used to parse mails (not sending them!)
|
||||||
|
*/
|
||||||
|
function __construct($account=null)
|
||||||
|
{
|
||||||
|
// Horde use locale for translation of error messages
|
||||||
|
Preferences::setlocale(LC_MESSAGES);
|
||||||
|
|
||||||
|
parent::__construct();
|
||||||
|
|
||||||
|
if ($account !== false)
|
||||||
|
{
|
||||||
|
$this->_headers->setUserAgent('EGroupware API '.$GLOBALS['egw_info']['server']['versions']['phpgwapi']);
|
||||||
|
|
||||||
|
$this->setAccount($account);
|
||||||
|
|
||||||
|
$this->is_html = false;
|
||||||
|
|
||||||
|
$this->clearAllRecipients();
|
||||||
|
$this->clearReplyTos();
|
||||||
|
|
||||||
|
$this->clearParts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear all recipients: to, cc, bcc (but NOT reply-to!)
|
||||||
|
*/
|
||||||
|
function clearAllRecipients()
|
||||||
|
{
|
||||||
|
// clear all addresses
|
||||||
|
$this->clearAddresses();
|
||||||
|
$this->clearCCs();
|
||||||
|
$this->clearBCCs();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set mail account to use for sending
|
||||||
|
*
|
||||||
|
* @param int|Mail\Account $account =null mail account to use, default use Mail\Account::get_default($smtp=true)
|
||||||
|
* @throws Exception\NotFound if account was not found (or not valid for current user)
|
||||||
|
*/
|
||||||
|
function setAccount($account=null)
|
||||||
|
{
|
||||||
|
if (is_a($account, 'Mail\Account'))
|
||||||
|
{
|
||||||
|
$this->account = $account;
|
||||||
|
}
|
||||||
|
elseif ($account > 0)
|
||||||
|
{
|
||||||
|
$this->account = Mail\Account::read($account);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!($this->account = Mail\Account::get_default(true))) // true = need an SMTP (not just IMAP) account
|
||||||
|
{
|
||||||
|
throw new Exception\NotFound('SMTP: '.lang('Account not found!'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$identity = Mail\Account::read_identity($this->account->ident_id, true, null, $this->account);
|
||||||
|
}
|
||||||
|
catch(Exception $e)
|
||||||
|
{
|
||||||
|
unset($e);
|
||||||
|
error_log(__METHOD__.__LINE__.' Could not read_identity for account:'.$account['acc_id'].' with IdentID:'.$account['ident_id']);
|
||||||
|
$identity['ident_email'] = $this->account->ident_email;
|
||||||
|
$identity['ident_realname'] = $this->account->ident_realname ? $this->account->ident_realname : $this->account->ident_email;
|
||||||
|
}
|
||||||
|
|
||||||
|
// use smpt-username as sender/return-path, if available, but only if it is a full email address
|
||||||
|
$sender = $this->account->acc_smtp_username && strpos($this->account->acc_smtp_username, '@') !== false ?
|
||||||
|
$this->account->acc_smtp_username : $identity['ident_email'];
|
||||||
|
$this->addHeader('Return-Path', '<'.$sender.'>', true);
|
||||||
|
|
||||||
|
$this->setFrom($identity['ident_email'], $identity['ident_realname']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set From header
|
||||||
|
*
|
||||||
|
* @param string $address
|
||||||
|
* @param string $personal =''
|
||||||
|
*/
|
||||||
|
public function setFrom($address, $personal='')
|
||||||
|
{
|
||||||
|
$this->addHeader('From', self::add_personal($address, $personal));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add one or multiple addresses to To, Cc, Bcc or Reply-To
|
||||||
|
*
|
||||||
|
* @param string|array|Horde_Mail_Rfc822_List $address
|
||||||
|
* @param string $personal ='' only used if $address is a string
|
||||||
|
* @param string $type ='to' type of address to add "to", "cc", "bcc" or "replyto"
|
||||||
|
*/
|
||||||
|
function addAddress($address, $personal='', $type='to')
|
||||||
|
{
|
||||||
|
if (!isset(self::$type2header[$type]))
|
||||||
|
{
|
||||||
|
throw new Exception\WrongParameter("Unknown type '$type'!");
|
||||||
|
}
|
||||||
|
if ($personal) $address = self::add_personal ($address, $personal);
|
||||||
|
|
||||||
|
// add to our local list
|
||||||
|
$this->$type->add($address);
|
||||||
|
|
||||||
|
// add as header
|
||||||
|
$this->addHeader(self::$type2header[$type], $this->$type, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove all addresses from To, Cc, Bcc or Reply-To
|
||||||
|
*
|
||||||
|
* @param string $type ='to' type of address to add "to", "cc", "bcc" or "replyto"
|
||||||
|
*/
|
||||||
|
function clearAddresses($type='to')
|
||||||
|
{
|
||||||
|
$this->$type = new Horde_Mail_Rfc822_List();
|
||||||
|
|
||||||
|
$this->removeHeader(self::$type2header[$type]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get set to addressses
|
||||||
|
*
|
||||||
|
* @param string $type ='to' type of address to add "to", "cc", "bcc" or "replyto"
|
||||||
|
* @param boolean $return_array =false true: return array of string, false: Horde_Mail_Rfc822_List
|
||||||
|
* @return array|Horde_Mail_Rfc822_List supporting arrayAccess and Iterable
|
||||||
|
*/
|
||||||
|
function getAddresses($type='to', $return_array=false)
|
||||||
|
{
|
||||||
|
if ($return_array)
|
||||||
|
{
|
||||||
|
$addresses = array();
|
||||||
|
foreach($this->$type as $addr)
|
||||||
|
{
|
||||||
|
$addresses[] = (string)$addr;
|
||||||
|
}
|
||||||
|
return $addresses;
|
||||||
|
}
|
||||||
|
return $this->$type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write Bcc as header for storing in sent or as draft
|
||||||
|
*
|
||||||
|
* Bcc is normally only add to recipients while sending, but not added visible as header.
|
||||||
|
*
|
||||||
|
* This function is should only be called AFTER calling send, or when NOT calling send at all!
|
||||||
|
*/
|
||||||
|
function forceBccHeader()
|
||||||
|
{
|
||||||
|
$this->_headers->removeHeader('Bcc');
|
||||||
|
|
||||||
|
// only add Bcc header, if we have bcc's
|
||||||
|
if (count($this->bcc))
|
||||||
|
{
|
||||||
|
$this->_headers->addHeader('Bcc', $this->bcc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add personal part to email address
|
||||||
|
*
|
||||||
|
* @param string $address
|
||||||
|
* @param string $personal
|
||||||
|
* @return string Rfc822 address
|
||||||
|
*/
|
||||||
|
static function add_personal($address, $personal)
|
||||||
|
{
|
||||||
|
if (is_string($address) && !empty($personal))
|
||||||
|
{
|
||||||
|
//if (!preg_match('/^[!#$%&\'*+/0-9=?A-Z^_`a-z{|}~-]+$/u', $personal)) // that's how I read the rfc(2)822
|
||||||
|
if ($personal && !preg_match('/^[0-9A-Z -]*$/iu', $personal)) // but quoting is never wrong, so quote more then necessary
|
||||||
|
{
|
||||||
|
$personal = '"'.str_replace(array('\\', '"'),array('\\\\', '\\"'), $personal).'"';
|
||||||
|
}
|
||||||
|
$address = ($personal ? $personal.' <' : '').$address.($personal ? '>' : '');
|
||||||
|
}
|
||||||
|
return $address;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add one or multiple addresses to Cc
|
||||||
|
*
|
||||||
|
* @param string|array|Horde_Mail_Rfc822_List $address
|
||||||
|
* @param string $personal ='' only used if $address is a string
|
||||||
|
*/
|
||||||
|
function addCc($address, $personal=null)
|
||||||
|
{
|
||||||
|
$this->addAddress($address, $personal, 'cc');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear all cc
|
||||||
|
*/
|
||||||
|
function clearCCs()
|
||||||
|
{
|
||||||
|
$this->clearAddresses('cc');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add one or multiple addresses to Bcc
|
||||||
|
*
|
||||||
|
* @param string|array|Horde_Mail_Rfc822_List $address
|
||||||
|
* @param string $personal ='' only used if $address is a string
|
||||||
|
*/
|
||||||
|
function addBcc($address, $personal=null)
|
||||||
|
{
|
||||||
|
$this->addAddress($address, $personal, 'bcc');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear all bcc
|
||||||
|
*/
|
||||||
|
function clearBCCs()
|
||||||
|
{
|
||||||
|
$this->clearAddresses('bcc');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add one or multiple addresses to Reply-To
|
||||||
|
*
|
||||||
|
* @param string|array|Horde_Mail_Rfc822_List $address
|
||||||
|
* @param string $personal ='' only used if $address is a string
|
||||||
|
*/
|
||||||
|
function addReplyTo($address, $personal=null)
|
||||||
|
{
|
||||||
|
$this->addAddress($address, $personal, 'replyto');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear all reply-to
|
||||||
|
*/
|
||||||
|
function clearReplyTos()
|
||||||
|
{
|
||||||
|
$this->clearAddresses('replyto');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get set ReplyTo addressses
|
||||||
|
*
|
||||||
|
* @return Horde_Mail_Rfc822_List supporting arrayAccess and Iterable
|
||||||
|
*/
|
||||||
|
function getReplyTo()
|
||||||
|
{
|
||||||
|
return $this->replyto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an attachment
|
||||||
|
*
|
||||||
|
* "text/calendar; method=..." get automatic detected and added as highest priority alternative
|
||||||
|
*
|
||||||
|
* @param string|resource $data Path to the attachment or open file-descriptor
|
||||||
|
* @param string $name The file name to use for the attachment.
|
||||||
|
* @param string $type The content type of the file.
|
||||||
|
* @param string $charset The character set of the part, only relevant for text parts.
|
||||||
|
* @return integer part-number
|
||||||
|
* @throws Exception\NotFound if $file could not be opened for reading
|
||||||
|
*/
|
||||||
|
public function addAttachment($data, $name = null, $type = null, $charset = 'us-ascii')
|
||||||
|
{
|
||||||
|
// deprecated PHPMailer::AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') call
|
||||||
|
if ($type === 'base64')
|
||||||
|
{
|
||||||
|
$type = $charset;
|
||||||
|
$charset = 'us-ascii';
|
||||||
|
}
|
||||||
|
|
||||||
|
// pass file as resource to Horde_Mime_Part::setContent()
|
||||||
|
if (is_resource($data))
|
||||||
|
{
|
||||||
|
$resource = $data;
|
||||||
|
}
|
||||||
|
elseif (!($resource = fopen($data, 'r')))
|
||||||
|
{
|
||||||
|
throw new Exception\NotFound("File '$data' not found!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($type) && !is_resource($data)) $type = Vfs::mime_content_type($data);
|
||||||
|
|
||||||
|
// set "text/calendar; method=*" as alternativ body
|
||||||
|
$matches = null;
|
||||||
|
if (preg_match('|^text/calendar; method=([^;]+)|i', $type, $matches))
|
||||||
|
{
|
||||||
|
$this->setAlternativBody($resource, $type, array('method' => $matches[1]), 'utf-8');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$part = new Horde_Mime_Part();
|
||||||
|
$part->setType($type);
|
||||||
|
$part->setContents($resource);
|
||||||
|
|
||||||
|
// setting name, also sets content-disposition attachment (!), therefore we have to do it after "text/calendar; method=" handling
|
||||||
|
if ($name || !is_resource($data)) $part->setName($name ? $name : Vfs::basename($data));
|
||||||
|
|
||||||
|
// this should not be necessary, because binary data get detected by mime-type,
|
||||||
|
// but at least Cyrus complains about NUL characters
|
||||||
|
$part->setTransferEncoding('base64', array('send' => true));
|
||||||
|
$part->setDisposition('attachment');
|
||||||
|
|
||||||
|
return $this->addMimePart($part);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an embedded image or other inline attachment
|
||||||
|
*
|
||||||
|
* @param string|resource $data Path to the attachment or open file-descriptor
|
||||||
|
* @param string $cid Content ID of the attachment. Use this to identify
|
||||||
|
* the Id for accessing the image in an HTML form.
|
||||||
|
* @param string $name Overrides the attachment name.
|
||||||
|
* @param string $type File extension (MIME) type.
|
||||||
|
* @return integer part-number
|
||||||
|
*/
|
||||||
|
public function addEmbeddedImage($data, $cid, $name = '', $type = 'application/octet-stream')
|
||||||
|
{
|
||||||
|
// deprecated PHPMailer::AddEmbeddedImage($path, $cid, $name='', $encoding='base64', $type='application/octet-stream') call
|
||||||
|
if ($type === 'base64' || func_num_args() == 5)
|
||||||
|
{
|
||||||
|
$type = func_get_arg(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
$part_id = $this->addAttachment($data, $name, $type);
|
||||||
|
//error_log(__METHOD__."(".array2string($data).", '$cid', '$name', '$type') added with (temp.) part_id=$part_id");
|
||||||
|
|
||||||
|
$part = $this->_parts[$part_id];
|
||||||
|
$part->setDisposition('inline');
|
||||||
|
$part->setContentId($cid);
|
||||||
|
|
||||||
|
return $part_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a string or binary attachment (non-filesystem) to the list.
|
||||||
|
*
|
||||||
|
* "text/calendar; method=..." get automatic detected and added as highest priority alternative,
|
||||||
|
* overwriting evtl. existing html body!
|
||||||
|
*
|
||||||
|
* @param string|resource $content String attachment data or open file descriptor
|
||||||
|
* @param string $filename Name of the attachment. We assume that this is NOT a path
|
||||||
|
* @param string $type File extension (MIME) type.
|
||||||
|
* @return int part-number
|
||||||
|
*/
|
||||||
|
public function addStringAttachment($content, $filename, $type = 'application/octet-stream')
|
||||||
|
{
|
||||||
|
// deprecated PHPMailer::AddStringAttachment($content, $filename = '', $encoding = 'base64', $type = 'application/octet-stream') call
|
||||||
|
if ($type === 'base64' || func_num_args() == 4)
|
||||||
|
{
|
||||||
|
$type = func_get_arg(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set "text/calendar; method=*" as alternativ body
|
||||||
|
$matches = null;
|
||||||
|
if (preg_match('|^text/calendar; method=([^;]+)|i', $type, $matches))
|
||||||
|
{
|
||||||
|
$this->setAlternativBody($content, $type, array('method' => $matches[1]), 'utf-8');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$part = new Horde_Mime_Part();
|
||||||
|
$part->setType($type);
|
||||||
|
$part->setCharset('utf-8');
|
||||||
|
$part->setContents($content);
|
||||||
|
|
||||||
|
// this should not be necessary, because binary data get detected by mime-type,
|
||||||
|
// but at least Cyrus complains about NUL characters
|
||||||
|
$part->setTransferEncoding('base64', array('send' => true));
|
||||||
|
$part->setName($filename);
|
||||||
|
$part->setDisposition('attachment');
|
||||||
|
|
||||||
|
return $this->addMimePart($part);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Highest/last alternativ body part.
|
||||||
|
*
|
||||||
|
* @var Horde_Mime_Part
|
||||||
|
*/
|
||||||
|
protected $_alternativBody;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets an alternativ body, eg. text/calendar has highest / last alternativ
|
||||||
|
*
|
||||||
|
* @param string|resource $content
|
||||||
|
* @param string $type eg. "text/calendar"
|
||||||
|
* @param array $parameters =array() eg. array('method' => 'REQUEST')
|
||||||
|
* @param string $charset =null default to $this->_charset="utf-8"
|
||||||
|
*/
|
||||||
|
function setAlternativBody($content, $type, $parameters=array(), $charset=null)
|
||||||
|
{
|
||||||
|
$this->_alternativBody = new Horde_Mime_Part();
|
||||||
|
$this->_alternativBody->setType($type);
|
||||||
|
foreach($parameters as $label => $data)
|
||||||
|
{
|
||||||
|
$this->_alternativBody->setContentTypeParameter($label, $data);
|
||||||
|
}
|
||||||
|
$this->_alternativBody->setCharset($charset ? $charset : $this->_charset);
|
||||||
|
$this->_alternativBody->setContents($content);
|
||||||
|
$this->_base = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send mail, injecting mail transport from account
|
||||||
|
*
|
||||||
|
* Log mails to log file specified in $GLOBALS['egw_info']['server']['log_mail']
|
||||||
|
* or regular error_log for true (can be set either in DB or header.inc.php).
|
||||||
|
*
|
||||||
|
* @throws Exception\NotFound for no smtp account available
|
||||||
|
* @throws Horde_Mime_Exception
|
||||||
|
*/
|
||||||
|
function send()
|
||||||
|
{
|
||||||
|
if (!($message_id = $this->getHeader('Message-ID')) &&
|
||||||
|
class_exists('Horde_Mime_Headers_MessageId')) // since 2.5.0
|
||||||
|
{
|
||||||
|
$message_id = Horde_Mime_Headers_MessageId::create('EGroupware');
|
||||||
|
$this->addHeader('Message-ID', $message_id);
|
||||||
|
}
|
||||||
|
$body_sha1 = null; // skip sha1, it requires whole mail in memory, which we traing to avoid now
|
||||||
|
|
||||||
|
$mail_id = $GLOBALS['egw']->hooks->process(array(
|
||||||
|
'location' => 'send_mail',
|
||||||
|
'subject' => $subject=$this->getHeader('Subject'),
|
||||||
|
'from' => $this->getHeader('Return-Path') ? $this->getHeader('Return-Path') : $this->getHeader('From'),
|
||||||
|
'to' => $to=$this->getAddresses('to', true),
|
||||||
|
'cc' => $cc=$this->getAddresses('cc', true),
|
||||||
|
'bcc' => $bcc=$this->getAddresses('bcc', true),
|
||||||
|
'body_sha1' => $body_sha1,
|
||||||
|
'message_id' => (string)$message_id,
|
||||||
|
), array(), true); // true = call all apps
|
||||||
|
|
||||||
|
// check if we are sending an html mail with inline images
|
||||||
|
if (!empty($this->_htmlBody) && count($this->_parts))
|
||||||
|
{
|
||||||
|
$related = null;
|
||||||
|
foreach($this->_parts as $n => $part)
|
||||||
|
{
|
||||||
|
if ($part->getDisposition() == 'inline' && $part->getContentId())
|
||||||
|
{
|
||||||
|
// we need to send a multipart/related with html-body as first part and inline images as further parts
|
||||||
|
if (!isset($related))
|
||||||
|
{
|
||||||
|
$related = new Horde_Mime_Part();
|
||||||
|
$related->setType('multipart/related');
|
||||||
|
$related[] = $this->_htmlBody;
|
||||||
|
$this->_htmlBody = $related;
|
||||||
|
}
|
||||||
|
$related[] = $part;
|
||||||
|
unset($this->_parts[$n]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// no flowed for encrypted messages
|
||||||
|
$flowed = $this->_body && $this->_body->getType() != 'multipart/encrypted';
|
||||||
|
|
||||||
|
// check if flowed is disabled in mail site configuration
|
||||||
|
if (($config = config::read('mail')) && $config['disable_rfc3676_flowed'])
|
||||||
|
{
|
||||||
|
$flowed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// handling of alternativ body
|
||||||
|
if (!empty($this->_alternativBody))
|
||||||
|
{
|
||||||
|
$body = new Horde_Mime_Part();
|
||||||
|
$body->setType('multipart/alternative');
|
||||||
|
if (!empty($this->_body))
|
||||||
|
{
|
||||||
|
// Send in flowed format.
|
||||||
|
if ($flowed)
|
||||||
|
{
|
||||||
|
$text_flowed = new Horde_Text_Flowed($this->_body->getContents(), $this->_body->getCharset());
|
||||||
|
$text_flowed->setDelSp(true);
|
||||||
|
$this->_body->setContentTypeParameter('format', 'flowed');
|
||||||
|
$this->_body->setContentTypeParameter('DelSp', 'Yes');
|
||||||
|
$this->_body->setContents($text_flowed->toFlowed());
|
||||||
|
}
|
||||||
|
$body[] = $this->_body;
|
||||||
|
}
|
||||||
|
if (!empty($this->_htmlBody))
|
||||||
|
{
|
||||||
|
$body[] = $this->_htmlBody;
|
||||||
|
unset($this->_htmlBody);
|
||||||
|
}
|
||||||
|
$body[] = $this->_alternativBody;
|
||||||
|
unset($this->_alternativBody);
|
||||||
|
$this->_body = $body;
|
||||||
|
$flowed = false;
|
||||||
|
}
|
||||||
|
parent::send($this->account->smtpTransport(), true, $flowed); // true: keep Message-ID
|
||||||
|
}
|
||||||
|
catch (\Exception $e) {
|
||||||
|
// in case of errors/exceptions call hook again with previous returned mail_id and error-message to log
|
||||||
|
$GLOBALS['egw']->hooks->process(array(
|
||||||
|
'location' => 'send_mail',
|
||||||
|
'subject' => $subject,
|
||||||
|
'from' => $this->getHeader('Return-Path') ? $this->getHeader('Return-Path') : $this->getHeader('From'),
|
||||||
|
'to' => $to,
|
||||||
|
'cc' => $cc,
|
||||||
|
'bcc' => $bcc,
|
||||||
|
'body_sha1' => $body_sha1,
|
||||||
|
'message_id' => (string)$message_id,
|
||||||
|
'mail_id' => $mail_id,
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
), array(), true); // true = call all apps
|
||||||
|
}
|
||||||
|
|
||||||
|
// log mails to file specified in $GLOBALS['egw_info']['server']['log_mail'] or error_log for true
|
||||||
|
if ($GLOBALS['egw_info']['server']['log_mail'])
|
||||||
|
{
|
||||||
|
$msg = $GLOBALS['egw_info']['server']['log_mail'] !== true ? date('Y-m-d H:i:s')."\n" : '';
|
||||||
|
$msg .= (isset($e) ? 'Mail send' : 'Mail NOT send').
|
||||||
|
' to '.implode(', ', $to).' with subject: "'.$subject.'"';
|
||||||
|
|
||||||
|
$msg .= ' from instance '.$GLOBALS['egw_info']['user']['domain'].' and IP '.Session::getuser_ip();
|
||||||
|
$msg .= ' from user #'.$GLOBALS['egw_info']['user']['account_id'];
|
||||||
|
|
||||||
|
if ($GLOBALS['egw_info']['user']['account_id'] && class_exists(__NAMESPACE__.'\\Accounts',false))
|
||||||
|
{
|
||||||
|
$msg .= ' ('.Accounts::username($GLOBALS['egw_info']['user']['account_id']).')';
|
||||||
|
}
|
||||||
|
if (isset($e))
|
||||||
|
{
|
||||||
|
$msg .= $GLOBALS['egw_info']['server']['log_mail'] !== true ? "\n" : ': ';
|
||||||
|
$msg .= 'ERROR '.$e->getMessage();
|
||||||
|
}
|
||||||
|
$msg .= ' cc='.implode(', ', $cc).', bcc='.implode(', ', $bcc);
|
||||||
|
if ($GLOBALS['egw_info']['server']['log_mail'] !== true) $msg .= "\n\n";
|
||||||
|
|
||||||
|
error_log($msg,$GLOBALS['egw_info']['server']['log_mail'] === true ? 0 : 3,
|
||||||
|
$GLOBALS['egw_info']['server']['log_mail']);
|
||||||
|
}
|
||||||
|
// rethrow error
|
||||||
|
if (isset($e)) throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset all Settings to send multiple Messages
|
||||||
|
*/
|
||||||
|
function clearAll()
|
||||||
|
{
|
||||||
|
$this->__construct($this->account);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get value of a header set with addHeader()
|
||||||
|
*
|
||||||
|
* @param string $header
|
||||||
|
* @return string|array
|
||||||
|
*/
|
||||||
|
function getHeader($header)
|
||||||
|
{
|
||||||
|
return $this->_headers ? $this->_headers->getValue($header) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the raw email data sent by this object.
|
||||||
|
*
|
||||||
|
* Reimplement to be able to call it for saveAsDraft by calling
|
||||||
|
* $this->send(new Horde_Mail_Transport_Null()),
|
||||||
|
* if no base-part is set, because send is not called before.
|
||||||
|
*
|
||||||
|
* @param boolean $stream If true, return a stream resource, otherwise
|
||||||
|
* @return stream|string The raw email data.
|
||||||
|
*/
|
||||||
|
function getRaw($stream=true)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$this->getBasePart();
|
||||||
|
}
|
||||||
|
catch(Horde_Mail_Exception $e)
|
||||||
|
{
|
||||||
|
unset($e);
|
||||||
|
parent::send(new Horde_Mail_Transport_Null(), true); // true: keep Message-ID
|
||||||
|
}
|
||||||
|
// code copied from Horde_Mime_Mail::getRaw(), as there is no way to inject charset in
|
||||||
|
// _headers->toString(), which is required to encode headers containing non-ascii chars correct
|
||||||
|
if ($stream) {
|
||||||
|
$hdr = new Horde_Stream();
|
||||||
|
$hdr->add($this->_headers->toString(array('charset' => 'utf-8', 'canonical' => true)), true);
|
||||||
|
return Horde_Stream_Wrapper_Combine::getStream(
|
||||||
|
array($hdr->stream,
|
||||||
|
$this->getBasePart()->toString(
|
||||||
|
array('stream' => true, 'canonical' => true, 'encode' => Horde_Mime_Part::ENCODE_7BIT | Horde_Mime_Part::ENCODE_8BIT | Horde_Mime_Part::ENCODE_BINARY))
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->_headers->toString(array('charset' => 'utf-8', 'canonical' => true)) .
|
||||||
|
$this->getBasePart()->toString(array('canonical' => true));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert charset of text-parts of message to utf-8
|
||||||
|
*
|
||||||
|
* @param string|resource $message
|
||||||
|
* @param boolean $stream =false return stream or string (default)
|
||||||
|
* @param string $charset ='utf-8' charset to convert to
|
||||||
|
* @param boolean &$converted =false on return if conversation was necessary
|
||||||
|
* @return string|stream
|
||||||
|
*/
|
||||||
|
static function convert($message, $stream=false, $charset='utf-8', &$converted=false)
|
||||||
|
{
|
||||||
|
$mailer = new Mailer(false); // false = no default headers and mail account
|
||||||
|
$mailer->addHeaders(Horde_Mime_Headers::parseHeaders($message));
|
||||||
|
$base = Horde_Mime_Part::parseMessage($message);
|
||||||
|
foreach($base->partIterator() as $part)
|
||||||
|
{
|
||||||
|
if ($part->getPrimaryType()== 'text')
|
||||||
|
{
|
||||||
|
$charset = $part->getContentTypeParameter('charset');
|
||||||
|
if ($charset && $charset != 'utf-8')
|
||||||
|
{
|
||||||
|
$content = Translation::convert($part->toString(array(
|
||||||
|
'encode' => Horde_Mime_Part::ENCODE_BINARY, // otherwise we cant recode charset
|
||||||
|
)), $charset, 'utf-8');
|
||||||
|
$part->setContents($content, array(
|
||||||
|
'encode' => Horde_Mime_Part::ENCODE_BINARY, // $content is NOT encoded
|
||||||
|
));
|
||||||
|
$part->setContentTypeParameter('charset', 'utf-8');
|
||||||
|
if ($part === $base)
|
||||||
|
{
|
||||||
|
$mailer->addHeader('Content-Type', $part->getType(true));
|
||||||
|
// need to set Transfer-Encoding used by base-part, it always seems to be "quoted-printable"
|
||||||
|
$mailer->addHeader('Content-Transfer-Encoding', 'quoted-printable');
|
||||||
|
}
|
||||||
|
$converted = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($part->getType() == 'message/rfc822')
|
||||||
|
{
|
||||||
|
$part->setContents(self::convert($part->toString(), $stream, $charset, $converted));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($converted)
|
||||||
|
{
|
||||||
|
$mailer->setBasePart($base);
|
||||||
|
return $mailer->getRaw($stream);
|
||||||
|
}
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find body: 1. part with mimetype "text/$subtype"
|
||||||
|
*
|
||||||
|
* Use getContents() on non-null return-value to get string content
|
||||||
|
*
|
||||||
|
* @param string $subtype =null
|
||||||
|
* @return Horde_Mime_Part part with body or null
|
||||||
|
*/
|
||||||
|
function findBody($subtype=null)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$base = $this->getBasePart();
|
||||||
|
if (!($part_id = $base->findBody($subtype))) return null;
|
||||||
|
return $base->getPart($part_id);
|
||||||
|
}
|
||||||
|
catch (Exception $e) {
|
||||||
|
unset($e);
|
||||||
|
return $subtype == 'html' ? $this->_htmlBody : $this->_body;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse base-part into _body, _htmlBody, _alternativBody and _parts to eg. add further attachments
|
||||||
|
*/
|
||||||
|
function parseBasePart()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$base = $this->getBasePart();
|
||||||
|
$plain_id = $base->findBody('plain');
|
||||||
|
$html_id = $base->findBody('html');
|
||||||
|
|
||||||
|
// find further alternativ part
|
||||||
|
if ($base->getType() == 'multipart/alternativ' && count($base) !== ($html_id ? $html_id : $plain_id))
|
||||||
|
{
|
||||||
|
$alternativ_id = (string)count($base);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_body = $this->_htmlBody = $this->_alternativBody = null;
|
||||||
|
$this->clearParts();
|
||||||
|
|
||||||
|
foreach($base->partIterator() as $part)
|
||||||
|
{
|
||||||
|
$id = $part->getMimeId();
|
||||||
|
//error_log(__METHOD__."() plain=$plain_id, html=$html_id: $id: ".$part->getType());
|
||||||
|
switch($id)
|
||||||
|
{
|
||||||
|
case '0': // base-part itself
|
||||||
|
continue 2;
|
||||||
|
case $plain_id:
|
||||||
|
$this->_body = $part;
|
||||||
|
break;
|
||||||
|
case $html_id:
|
||||||
|
$this->_htmlBody = $part;
|
||||||
|
break;
|
||||||
|
case $alternativ_id:
|
||||||
|
$this->_alternativBody = $part;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$this->_parts[] = $part;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->setBasePart(null);
|
||||||
|
}
|
||||||
|
catch (\Exception $e) {
|
||||||
|
// ignore that there is no base-part yet, so nothing to do
|
||||||
|
unset($e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a MIME message part.
|
||||||
|
*
|
||||||
|
* Reimplemented to add parts / attachments if message was parsed / already has a base-part
|
||||||
|
*
|
||||||
|
* @param Horde_Mime_Part $part A Horde_Mime_Part object.
|
||||||
|
* @return integer The part number.
|
||||||
|
*/
|
||||||
|
public function addMimePart($part)
|
||||||
|
{
|
||||||
|
if ($this->_base) $this->parseBasePart();
|
||||||
|
|
||||||
|
return parent::addMimePart($part);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets OpenPGP encrypted body according to rfc3156, section 4
|
||||||
|
*
|
||||||
|
* @param string $body The message content.
|
||||||
|
* @link https://tools.ietf.org/html/rfc3156#section-4
|
||||||
|
*/
|
||||||
|
public function setOpenPgpBody($body)
|
||||||
|
{
|
||||||
|
$this->_body = new Horde_Mime_Part();
|
||||||
|
$this->_body->setType('multipart/encrypted');
|
||||||
|
$this->_body->setContentTypeParameter('protocol', 'application/pgp-encrypted');
|
||||||
|
$this->_body->setContents('');
|
||||||
|
|
||||||
|
$part1 = new Horde_Mime_Part();
|
||||||
|
$part1->setType('application/pgp-encrypted');
|
||||||
|
$part1->setContents("Version: 1\r\n", array('encoding' => '7bit'));
|
||||||
|
$this->_body->addPart($part1);
|
||||||
|
|
||||||
|
$part2 = new Horde_Mime_Part();
|
||||||
|
$part2->setType('application/octet-stream');
|
||||||
|
$part2->setContents($body, array('encoding' => '7bit'));
|
||||||
|
$this->_body->addPart($part2);
|
||||||
|
|
||||||
|
$this->_base = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear all non-standard headers
|
||||||
|
*
|
||||||
|
* Used in merge-print to remove headers before sending "new" mail
|
||||||
|
*/
|
||||||
|
function clearCustomHeaders()
|
||||||
|
{
|
||||||
|
foreach($this->_headers->toArray() as $header => $value)
|
||||||
|
{
|
||||||
|
if (stripos($header, 'x-') === 0 || $header == 'Received')
|
||||||
|
{
|
||||||
|
$this->_headers->removeHeader($header);
|
||||||
|
}
|
||||||
|
unset($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
1009
api/src/Preferences.php
Normal file
1009
api/src/Preferences.php
Normal file
File diff suppressed because it is too large
Load Diff
@ -5,11 +5,14 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @package mail
|
* @package mail
|
||||||
* @author Hadi Nategh [hn@stylite.de]
|
* @author Hadi Nategh [hn@stylite.de]
|
||||||
* @copyright (c) 2013 by Stylite AG <info-AT-stylite.de>
|
* @copyright (c) 2013-16 by Stylite AG <info-AT-stylite.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
class mail_acl
|
class mail_acl
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@ -36,17 +39,10 @@ class mail_acl
|
|||||||
'custom' => array('label'=>'custom','title'=>'User defined combination of rights for the ACL'),
|
'custom' => array('label'=>'custom','title'=>'User defined combination of rights for the ACL'),
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
* instance of mail_bo
|
|
||||||
*
|
|
||||||
* @var mail_bo
|
|
||||||
*/
|
|
||||||
var $mail_bo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* imap object instanciated in constructor for account to edit
|
* imap object instanciated in constructor for account to edit
|
||||||
*
|
*
|
||||||
* @var emailadmin_imap
|
* @var Mail\Imap
|
||||||
*/
|
*/
|
||||||
var $imap;
|
var $imap;
|
||||||
|
|
||||||
@ -65,7 +61,7 @@ class mail_acl
|
|||||||
*/
|
*/
|
||||||
function edit(array $content=null ,$msg='')
|
function edit(array $content=null ,$msg='')
|
||||||
{
|
{
|
||||||
$tmpl = new etemplate_new('mail.acl');
|
$tmpl = new Api\Etemplate('mail.acl');
|
||||||
if (!is_array($content))
|
if (!is_array($content))
|
||||||
{
|
{
|
||||||
$acc_id = $_GET['acc_id']?$_GET['acc_id']:$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'];
|
$acc_id = $_GET['acc_id']?$_GET['acc_id']:$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'];
|
||||||
@ -80,7 +76,7 @@ class mail_acl
|
|||||||
$acc_id = $content['acc_id'];
|
$acc_id = $content['acc_id'];
|
||||||
$account_id = $content['account_id'];
|
$account_id = $content['account_id'];
|
||||||
}
|
}
|
||||||
$account = emailadmin_account::read($acc_id, $account_id);
|
$account = Mail\Account::read($acc_id, $account_id);
|
||||||
$this->imap = $account->imapServer(isset($account_id) ? (int)$account_id : false);
|
$this->imap = $account->imapServer(isset($account_id) ? (int)$account_id : false);
|
||||||
|
|
||||||
$mailbox = $_GET['mailbox']? base64_decode($_GET['mailbox']): $content['mailbox'][0];
|
$mailbox = $_GET['mailbox']? base64_decode($_GET['mailbox']): $content['mailbox'][0];
|
||||||
@ -185,8 +181,8 @@ class mail_acl
|
|||||||
//Fall through
|
//Fall through
|
||||||
case 'cancel':
|
case 'cancel':
|
||||||
egw_framework::window_close();
|
egw_framework::window_close();
|
||||||
common::egw_exit();
|
exit;
|
||||||
break;
|
|
||||||
case 'delete':
|
case 'delete':
|
||||||
$aclRvmCnt = $this->remove_acl($content, $msg);
|
$aclRvmCnt = $this->remove_acl($content, $msg);
|
||||||
if (is_array($aclRvmCnt))
|
if (is_array($aclRvmCnt))
|
||||||
@ -251,7 +247,7 @@ class mail_acl
|
|||||||
{
|
{
|
||||||
throw new egw_exception_no_permission_admin;
|
throw new egw_exception_no_permission_admin;
|
||||||
}
|
}
|
||||||
$account = emailadmin_account::read($_GET['acc_id'], $_GET['account_id']);
|
$account = Mail\Account::read($_GET['acc_id'], $_GET['account_id']);
|
||||||
$imap = $account->imapServer(!empty($_GET['account_id']) ? (int)$_GET['account_id'] : false);
|
$imap = $account->imapServer(!empty($_GET['account_id']) ? (int)$_GET['account_id'] : false);
|
||||||
$mailbox = $imap->isAdminConnection ? $imap->getUserMailboxString($imap->isAdminConnection) : 'INBOX';
|
$mailbox = $imap->isAdminConnection ? $imap->getUserMailboxString($imap->isAdminConnection) : 'INBOX';
|
||||||
|
|
||||||
@ -272,7 +268,7 @@ class mail_acl
|
|||||||
header('Content-Type: application/json; charset=utf-8');
|
header('Content-Type: application/json; charset=utf-8');
|
||||||
echo json_encode($folders);
|
echo json_encode($folders);
|
||||||
|
|
||||||
common::egw_exit();
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -441,10 +437,10 @@ class mail_acl
|
|||||||
* Get subfolders of a mailbox
|
* Get subfolders of a mailbox
|
||||||
*
|
*
|
||||||
* @param string $mailbox structural folder name
|
* @param string $mailbox structural folder name
|
||||||
* @param emailadmin_imap $imap
|
* @param Mail\Imap $imap
|
||||||
* @return Array an array including all subfolders of given mailbox| returns an empty array in case of no subfolders
|
* @return Array an array including all subfolders of given mailbox| returns an empty array in case of no subfolders
|
||||||
*/
|
*/
|
||||||
protected static function getSubfolders($mailbox, emailadmin_imap $imap)
|
protected static function getSubfolders($mailbox, Mail\Imap $imap)
|
||||||
{
|
{
|
||||||
$delimiter = $imap->getDelimiter();
|
$delimiter = $imap->getDelimiter();
|
||||||
$nameSpace = $imap->getNameSpace();
|
$nameSpace = $imap->getNameSpace();
|
||||||
|
@ -5,18 +5,18 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @package mail
|
* @package mail
|
||||||
* @author Stylite AG [info@stylite.de]
|
* @author Stylite AG [info@stylite.de]
|
||||||
* @copyright (c) 2013-2014 by Stylite AG <info-AT-stylite.de>
|
* @copyright (c) 2013-2016 by Stylite AG <info-AT-stylite.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mail worker class
|
* Mail worker class
|
||||||
* -provides backend functionality for all classes in Mail
|
* -provides backend functionality for all classes in Mail
|
||||||
* -provides classes that may be used by other apps too
|
* -provides classes that may be used by other apps too
|
||||||
*
|
*
|
||||||
* @link https://github.com/horde/horde/blob/master/imp/lib/Contents.php
|
* @deprecated use Api\Mail
|
||||||
*/
|
*/
|
||||||
class mail_bo extends emailadmin_imapbase
|
class mail_bo extends Mail {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
@ -10,7 +10,9 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
use EGroupware\Api\Vfs;
|
use EGroupware\Api\Vfs;
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mail interface class for compose mails in popup
|
* Mail interface class for compose mails in popup
|
||||||
@ -44,9 +46,9 @@ class mail_compose
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instance of mail_bo
|
* Instance of Mail
|
||||||
*
|
*
|
||||||
* @var mail_bo
|
* @var Mail
|
||||||
*/
|
*/
|
||||||
var $mail_bo;
|
var $mail_bo;
|
||||||
|
|
||||||
@ -66,7 +68,7 @@ class mail_compose
|
|||||||
$this->displayCharset = translation::charset();
|
$this->displayCharset = translation::charset();
|
||||||
|
|
||||||
$profileID = (int)$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'];
|
$profileID = (int)$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'];
|
||||||
$this->mail_bo = mail_bo::getInstance(true,$profileID);
|
$this->mail_bo = Mail::getInstance(true,$profileID);
|
||||||
$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'] = $this->mail_bo->profileID;
|
$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'] = $this->mail_bo->profileID;
|
||||||
|
|
||||||
$this->mailPreferences =& $this->mail_bo->mailPreferences;
|
$this->mailPreferences =& $this->mail_bo->mailPreferences;
|
||||||
@ -75,7 +77,7 @@ class mail_compose
|
|||||||
{
|
{
|
||||||
$this->mailPreferences['message_forwarding'] = 'asmail';
|
$this->mailPreferences['message_forwarding'] = 'asmail';
|
||||||
}
|
}
|
||||||
if (is_null(mail_bo::$mailConfig)) mail_bo::$mailConfig = config::read('mail');
|
if (is_null(Mail::$mailConfig)) Mail::$mailConfig = Api\Config::read('mail');
|
||||||
|
|
||||||
$this->mailPreferences =& $this->mail_bo->mailPreferences;
|
$this->mailPreferences =& $this->mail_bo->mailPreferences;
|
||||||
}
|
}
|
||||||
@ -89,9 +91,9 @@ class mail_compose
|
|||||||
{
|
{
|
||||||
if ($this->mail_bo->profileID!=$_icServerID)
|
if ($this->mail_bo->profileID!=$_icServerID)
|
||||||
{
|
{
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.'->'.$this->mail_bo->profileID.'<->'.$_icServerID);
|
if (Mail::$debug) error_log(__METHOD__.__LINE__.'->'.$this->mail_bo->profileID.'<->'.$_icServerID);
|
||||||
$this->mail_bo = mail_bo::getInstance(false,$_icServerID);
|
$this->mail_bo = Mail::getInstance(false,$_icServerID);
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' Fetched IC Server:'.$this->mail_bo->profileID.':'.function_backtrace());
|
if (Mail::$debug) error_log(__METHOD__.__LINE__.' Fetched IC Server:'.$this->mail_bo->profileID.':'.function_backtrace());
|
||||||
// no icServer Object: something failed big time
|
// no icServer Object: something failed big time
|
||||||
if (!isset($this->mail_bo->icServer)) exit; // ToDo: Exception or the dialog for setting up a server config
|
if (!isset($this->mail_bo->icServer)) exit; // ToDo: Exception or the dialog for setting up a server config
|
||||||
$this->mail_bo->openConnection($this->mail_bo->profileID);
|
$this->mail_bo->openConnection($this->mail_bo->profileID);
|
||||||
@ -301,7 +303,7 @@ class mail_compose
|
|||||||
if (isset($_content['composeID'])&&!empty($_content['composeID']))
|
if (isset($_content['composeID'])&&!empty($_content['composeID']))
|
||||||
{
|
{
|
||||||
$isFirstLoad = false;
|
$isFirstLoad = false;
|
||||||
$composeCache = egw_cache::getCache(egw_cache::SESSION,'mail','composeCache'.trim($GLOBALS['egw_info']['user']['account_id']).'_'.$_content['composeID'],$callback=null,$callback_params=array(),$expiration=60*60*2);
|
$composeCache = Api\Cache::getCache(Api\Cache::SESSION,'mail','composeCache'.trim($GLOBALS['egw_info']['user']['account_id']).'_'.$_content['composeID'],$callback=null,$callback_params=array(),$expiration=60*60*2);
|
||||||
$this->composeID = $_content['composeID'];
|
$this->composeID = $_content['composeID'];
|
||||||
//error_log(__METHOD__.__LINE__.array2string($composeCache));
|
//error_log(__METHOD__.__LINE__.array2string($composeCache));
|
||||||
}
|
}
|
||||||
@ -346,7 +348,7 @@ class mail_compose
|
|||||||
if (!isset($upload['file'])) $upload['file'] = $upload['tmp_name'];
|
if (!isset($upload['file'])) $upload['file'] = $upload['tmp_name'];
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$upload['file'] = $upload['tmp_name'] = mail_bo::checkFileBasics($upload,$this->composeID,false);
|
$upload['file'] = $upload['tmp_name'] = Mail::checkFileBasics($upload,$this->composeID,false);
|
||||||
}
|
}
|
||||||
catch (egw_exception_wrong_userinput $e)
|
catch (egw_exception_wrong_userinput $e)
|
||||||
{
|
{
|
||||||
@ -385,7 +387,7 @@ class mail_compose
|
|||||||
// someone clicked something like send, or saveAsDraft
|
// someone clicked something like send, or saveAsDraft
|
||||||
// make sure, we are connected to the correct server for sending and storing the send message
|
// make sure, we are connected to the correct server for sending and storing the send message
|
||||||
$activeProfile = $composeProfile = $this->mail_bo->profileID; // active profile may not be the profile uised in/for compose
|
$activeProfile = $composeProfile = $this->mail_bo->profileID; // active profile may not be the profile uised in/for compose
|
||||||
$activeFolderCache = egw_cache::getCache(egw_cache::INSTANCE,'email','activeMailbox'.trim($GLOBALS['egw_info']['user']['account_id']),$callback=null,$callback_params=array(),$expiration=60*60*10);
|
$activeFolderCache = Api\Cache::getCache(Api\Cache::INSTANCE,'email','activeMailbox'.trim($GLOBALS['egw_info']['user']['account_id']),$callback=null,$callback_params=array(),$expiration=60*60*10);
|
||||||
if (!empty($activeFolderCache[$this->mail_bo->profileID]))
|
if (!empty($activeFolderCache[$this->mail_bo->profileID]))
|
||||||
{
|
{
|
||||||
//error_log(__METHOD__.__LINE__.' CurrentFolder:'.$activeFolderCache[$this->mail_bo->profileID]);
|
//error_log(__METHOD__.__LINE__.' CurrentFolder:'.$activeFolderCache[$this->mail_bo->profileID]);
|
||||||
@ -401,7 +403,7 @@ class mail_compose
|
|||||||
}
|
}
|
||||||
// make sure $acc is set/initalized properly with the current composeProfile, as $acc is used down there
|
// make sure $acc is set/initalized properly with the current composeProfile, as $acc is used down there
|
||||||
// at several locations and not neccesaryly initialized before
|
// at several locations and not neccesaryly initialized before
|
||||||
$acc = emailadmin_account::read($composeProfile);
|
$acc = Mail\Account::read($composeProfile);
|
||||||
$buttonClicked = false;
|
$buttonClicked = false;
|
||||||
if ($_content['composeToolbar'] === 'send')
|
if ($_content['composeToolbar'] === 'send')
|
||||||
{
|
{
|
||||||
@ -598,9 +600,9 @@ class mail_compose
|
|||||||
$suppressSigOnTop = true;
|
$suppressSigOnTop = true;
|
||||||
if (!empty($composeCache['mailaccount']) && !empty($_content['mailaccount']) && $_content['mailaccount'] != $composeCache['mailaccount'])
|
if (!empty($composeCache['mailaccount']) && !empty($_content['mailaccount']) && $_content['mailaccount'] != $composeCache['mailaccount'])
|
||||||
{
|
{
|
||||||
$acc = emailadmin_account::read($_content['mailaccount']);
|
$acc = Mail\Account::read($_content['mailaccount']);
|
||||||
//error_log(__METHOD__.__LINE__.array2string($acc));
|
//error_log(__METHOD__.__LINE__.array2string($acc));
|
||||||
$Identities = emailadmin_account::read_identity($acc['ident_id'],true);
|
$Identities = Mail\Account::read_identity($acc['ident_id'],true);
|
||||||
//error_log(__METHOD__.__LINE__.array2string($Identities));
|
//error_log(__METHOD__.__LINE__.array2string($Identities));
|
||||||
if ($Identities['ident_id'])
|
if ($Identities['ident_id'])
|
||||||
{
|
{
|
||||||
@ -621,7 +623,7 @@ class mail_compose
|
|||||||
// prepare signatures, the selected sig may be used on top of the body
|
// prepare signatures, the selected sig may be used on top of the body
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$oldSignature = emailadmin_account::read_identity($_oldSig,true);
|
$oldSignature = Mail\Account::read_identity($_oldSig,true);
|
||||||
//error_log(__METHOD__.__LINE__.'Old:'.array2string($oldSignature).'#');
|
//error_log(__METHOD__.__LINE__.'Old:'.array2string($oldSignature).'#');
|
||||||
$oldSigText = $oldSignature['ident_signature'];
|
$oldSigText = $oldSignature['ident_signature'];
|
||||||
}
|
}
|
||||||
@ -632,7 +634,7 @@ class mail_compose
|
|||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$signature = emailadmin_account::read_identity($_signatureid,true);
|
$signature = Mail\Account::read_identity($_signatureid,true);
|
||||||
//error_log(__METHOD__.__LINE__.'New:'.array2string($signature).'#');
|
//error_log(__METHOD__.__LINE__.'New:'.array2string($signature).'#');
|
||||||
$sigText = $signature['ident_signature'];
|
$sigText = $signature['ident_signature'];
|
||||||
}
|
}
|
||||||
@ -650,23 +652,23 @@ class mail_compose
|
|||||||
if($this->_debug) error_log(__METHOD__." Old signature:".$oldSigText);
|
if($this->_debug) error_log(__METHOD__." Old signature:".$oldSigText);
|
||||||
}
|
}
|
||||||
|
|
||||||
//$oldSigText = mail_bo::merge($oldSigText,array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
//$oldSigText = Mail::merge($oldSigText,array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
||||||
//error_log(__METHOD__.'Old+:'.$oldSigText.'#');
|
//error_log(__METHOD__.'Old+:'.$oldSigText.'#');
|
||||||
//$sigText = mail_bo::merge($sigText,array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
//$sigText = Mail::merge($sigText,array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
||||||
//error_log(__METHOD__.'new+:'.$sigText.'#');
|
//error_log(__METHOD__.'new+:'.$sigText.'#');
|
||||||
$_htmlConfig = mail_bo::$htmLawed_config;
|
$_htmlConfig = Mail::$htmLawed_config;
|
||||||
mail_bo::$htmLawed_config['comment'] = 2;
|
Mail::$htmLawed_config['comment'] = 2;
|
||||||
mail_bo::$htmLawed_config['transform_anchor'] = false;
|
Mail::$htmLawed_config['transform_anchor'] = false;
|
||||||
$oldSigTextCleaned = str_replace(array("\r","\t","<br />\n",": "),array("","","<br />",":"),($_currentMode == 'html'?html::purify($oldSigText,null,array(),true):$oldSigText));
|
$oldSigTextCleaned = str_replace(array("\r","\t","<br />\n",": "),array("","","<br />",":"),($_currentMode == 'html'?html::purify($oldSigText,null,array(),true):$oldSigText));
|
||||||
//error_log(__METHOD__.'Old(clean):'.$oldSigTextCleaned.'#');
|
//error_log(__METHOD__.'Old(clean):'.$oldSigTextCleaned.'#');
|
||||||
if ($_currentMode == 'html')
|
if ($_currentMode == 'html')
|
||||||
{
|
{
|
||||||
$content['body'] = str_replace("\n",'\n',$content['body']); // dont know why, but \n screws up preg_replace
|
$content['body'] = str_replace("\n",'\n',$content['body']); // dont know why, but \n screws up preg_replace
|
||||||
$styles = mail_bo::getStyles(array(array('body'=>$content['body'])));
|
$styles = Mail::getStyles(array(array('body'=>$content['body'])));
|
||||||
if (stripos($content['body'],'style')!==false) translation::replaceTagsCompletley($content['body'],'style',$endtag='',true); // clean out empty or pagewide style definitions / left over tags
|
if (stripos($content['body'],'style')!==false) translation::replaceTagsCompletley($content['body'],'style',$endtag='',true); // clean out empty or pagewide style definitions / left over tags
|
||||||
}
|
}
|
||||||
$content['body'] = str_replace(array("\r","\t","<br />\n",": "),array("","","<br />",":"),($_currentMode == 'html'?html::purify($content['body'],mail_bo::$htmLawed_config,array(),true):$content['body']));
|
$content['body'] = str_replace(array("\r","\t","<br />\n",": "),array("","","<br />",":"),($_currentMode == 'html'?html::purify($content['body'],Mail::$htmLawed_config,array(),true):$content['body']));
|
||||||
mail_bo::$htmLawed_config = $_htmlConfig;
|
Mail::$htmLawed_config = $_htmlConfig;
|
||||||
if ($_currentMode == 'html')
|
if ($_currentMode == 'html')
|
||||||
{
|
{
|
||||||
$replaced = null;
|
$replaced = null;
|
||||||
@ -1065,7 +1067,7 @@ class mail_compose
|
|||||||
//_debug_array(($presetSig ? $presetSig : $content['mailidentity']));
|
//_debug_array(($presetSig ? $presetSig : $content['mailidentity']));
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$signature = emailadmin_account::read_identity($content['mailidentity'] ? $content['mailidentity'] : $presetSig,true);
|
$signature = Mail\Account::read_identity($content['mailidentity'] ? $content['mailidentity'] : $presetSig,true);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
@ -1082,7 +1084,7 @@ class mail_compose
|
|||||||
if($content['mimeType'] == 'html' /*&& trim($content['body'])==''*/) {
|
if($content['mimeType'] == 'html' /*&& trim($content['body'])==''*/) {
|
||||||
// User preferences for style
|
// User preferences for style
|
||||||
$font = $GLOBALS['egw_info']['user']['preferences']['common']['rte_font'];
|
$font = $GLOBALS['egw_info']['user']['preferences']['common']['rte_font'];
|
||||||
$font_size = egw_ckeditor_config::font_size_from_prefs();
|
$font_size = Api\Html\CkEditorConfig::font_size_from_prefs();
|
||||||
$font_part = '<span style="width:100%; display: inline; '.($font?'font-family:'.$font.'; ':'').($font_size?'font-size:'.$font_size.'; ':'').'">';
|
$font_part = '<span style="width:100%; display: inline; '.($font?'font-family:'.$font.'; ':'').($font_size?'font-size:'.$font_size.'; ':'').'">';
|
||||||
$font_span = $font_part.'​</span>';
|
$font_span = $font_part.'​</span>';
|
||||||
if (empty($font) && empty($font_size)) $font_span = '';
|
if (empty($font) && empty($font_size)) $font_span = '';
|
||||||
@ -1105,7 +1107,7 @@ class mail_compose
|
|||||||
'no_belowaftersend' => 'appended after reply before sending',
|
'no_belowaftersend' => 'appended after reply before sending',
|
||||||
*/
|
*/
|
||||||
$insertSigOnTop = ($insertSigOnTop?$insertSigOnTop:($this->mailPreferences['insertSignatureAtTopOfMessage']?$this->mailPreferences['insertSignatureAtTopOfMessage']:'below'));
|
$insertSigOnTop = ($insertSigOnTop?$insertSigOnTop:($this->mailPreferences['insertSignatureAtTopOfMessage']?$this->mailPreferences['insertSignatureAtTopOfMessage']:'below'));
|
||||||
$sigText = mail_bo::merge($signature['ident_signature'],array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
$sigText = Mail::merge($signature['ident_signature'],array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
||||||
if ($content['mimeType'] == 'html')
|
if ($content['mimeType'] == 'html')
|
||||||
{
|
{
|
||||||
$sigTextStartsWithBlockElement = ($disableRuler?false:true);
|
$sigTextStartsWithBlockElement = ($disableRuler?false:true);
|
||||||
@ -1149,7 +1151,7 @@ class mail_compose
|
|||||||
|
|
||||||
// get identities of all accounts as "$acc_id:$ident_id" => $identity
|
// get identities of all accounts as "$acc_id:$ident_id" => $identity
|
||||||
$sel_options['mailaccount'] = $identities = array();
|
$sel_options['mailaccount'] = $identities = array();
|
||||||
foreach(emailadmin_account::search(true,false) as $acc_id => $account)
|
foreach(Mail\Account::search(true,false) as $acc_id => $account)
|
||||||
{
|
{
|
||||||
foreach($account->identities($acc_id) as $ident_id => $identity)
|
foreach($account->identities($acc_id) as $ident_id => $identity)
|
||||||
{
|
{
|
||||||
@ -1181,10 +1183,10 @@ class mail_compose
|
|||||||
}
|
}
|
||||||
//error_log(__METHOD__.__LINE__.array2string(array('key'=>$key,'value'=>$value)));
|
//error_log(__METHOD__.__LINE__.array2string(array('key'=>$key,'value'=>$value)));
|
||||||
$value = str_replace("\"\"",'"', htmlspecialchars_decode($value, ENT_COMPAT));
|
$value = str_replace("\"\"",'"', htmlspecialchars_decode($value, ENT_COMPAT));
|
||||||
foreach(emailadmin_imapbase::parseAddressList($value) as $addressObject) {
|
foreach(Mail::parseAddressList($value) as $addressObject) {
|
||||||
if ($addressObject->host == '.SYNTAX-ERROR.') continue;
|
if ($addressObject->host == '.SYNTAX-ERROR.') continue;
|
||||||
$address = imap_rfc822_write_address($addressObject->mailbox,$addressObject->host,$addressObject->personal);
|
$address = imap_rfc822_write_address($addressObject->mailbox,$addressObject->host,$addressObject->personal);
|
||||||
//$address = mail_bo::htmlentities($address, $this->displayCharset);
|
//$address = Mail::htmlentities($address, $this->displayCharset);
|
||||||
$content[strtolower($destination)][]=$address;
|
$content[strtolower($destination)][]=$address;
|
||||||
$destinationRows++;
|
$destinationRows++;
|
||||||
}
|
}
|
||||||
@ -1246,25 +1248,25 @@ class mail_compose
|
|||||||
$sel_options['filemode'] = Vfs\Sharing::$modes;
|
$sel_options['filemode'] = Vfs\Sharing::$modes;
|
||||||
if (!isset($content['priority']) || empty($content['priority'])) $content['priority']=3;
|
if (!isset($content['priority']) || empty($content['priority'])) $content['priority']=3;
|
||||||
//$GLOBALS['egw_info']['flags']['currentapp'] = 'mail';//should not be needed
|
//$GLOBALS['egw_info']['flags']['currentapp'] = 'mail';//should not be needed
|
||||||
$etpl = new etemplate_new('mail.compose');
|
$etpl = new Api\Etemplate('mail.compose');
|
||||||
|
|
||||||
$etpl->setElementAttribute('composeToolbar', 'actions', $this->getToolbarActions($_content));
|
$etpl->setElementAttribute('composeToolbar', 'actions', $this->getToolbarActions($_content));
|
||||||
if ($content['mimeType']=='html')
|
if ($content['mimeType']=='html')
|
||||||
{
|
{
|
||||||
//mode="$cont[rtfEditorFeatures]" validation_rules="$cont[validation_rules]" base_href="$cont[upload_dir]"
|
//mode="$cont[rtfEditorFeatures]" validation_rules="$cont[validation_rules]" base_href="$cont[upload_dir]"
|
||||||
$_htmlConfig = mail_bo::$htmLawed_config;
|
$_htmlConfig = Mail::$htmLawed_config;
|
||||||
mail_bo::$htmLawed_config['comment'] = 2;
|
Mail::$htmLawed_config['comment'] = 2;
|
||||||
mail_bo::$htmLawed_config['transform_anchor'] = false;
|
Mail::$htmLawed_config['transform_anchor'] = false;
|
||||||
// it is intentional to use that simple-withimage configuration for the ckeditor
|
// it is intentional to use that simple-withimage configuration for the ckeditor
|
||||||
// and not the eGroupware wide pref to prevent users from trying things that will potentially not work
|
// and not the eGroupware wide pref to prevent users from trying things that will potentially not work
|
||||||
// or not work as expected, as a full featured editor that may be wanted in other apps
|
// or not work as expected, as a full featured editor that may be wanted in other apps
|
||||||
// is way overloading the "normal" needs for composing mails
|
// is way overloading the "normal" needs for composing mails
|
||||||
$content['rtfEditorFeatures']='simple-withimage';//egw_ckeditor_config::get_ckeditor_config();
|
$content['rtfEditorFeatures']='simple-withimage';//Api\Html\CkEditorConfig::get_ckeditor_config();
|
||||||
//$content['rtfEditorFeatures']='advanced';//egw_ckeditor_config::get_ckeditor_config();
|
//$content['rtfEditorFeatures']='advanced';//Api\Html\CkEditorConfig::get_ckeditor_config();
|
||||||
$content['validation_rules']= json_encode(mail_bo::$htmLawed_config);
|
$content['validation_rules']= json_encode(Mail::$htmLawed_config);
|
||||||
$etpl->setElementAttribute('mail_htmltext','mode',$content['rtfEditorFeatures']);
|
$etpl->setElementAttribute('mail_htmltext','mode',$content['rtfEditorFeatures']);
|
||||||
$etpl->setElementAttribute('mail_htmltext','validation_rules',$content['validation_rules']);
|
$etpl->setElementAttribute('mail_htmltext','validation_rules',$content['validation_rules']);
|
||||||
mail_bo::$htmLawed_config = $_htmlConfig;
|
Mail::$htmLawed_config = $_htmlConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($content['composeID'])&&!empty($content['composeID']))
|
if (isset($content['composeID'])&&!empty($content['composeID']))
|
||||||
@ -1273,7 +1275,7 @@ class mail_compose
|
|||||||
unset($composeCache['body']);
|
unset($composeCache['body']);
|
||||||
unset($composeCache['mail_htmltext']);
|
unset($composeCache['mail_htmltext']);
|
||||||
unset($composeCache['mail_plaintext']);
|
unset($composeCache['mail_plaintext']);
|
||||||
egw_cache::setCache(egw_cache::SESSION,'mail','composeCache'.trim($GLOBALS['egw_info']['user']['account_id']).'_'.$this->composeID,$composeCache,$expiration=60*60*2);
|
Api\Cache::setCache(Api\Cache::SESSION,'mail','composeCache'.trim($GLOBALS['egw_info']['user']['account_id']).'_'.$this->composeID,$composeCache,$expiration=60*60*2);
|
||||||
}
|
}
|
||||||
if (!isset($_content['serverID'])||empty($_content['serverID']))
|
if (!isset($_content['serverID'])||empty($_content['serverID']))
|
||||||
{
|
{
|
||||||
@ -1483,7 +1485,7 @@ class mail_compose
|
|||||||
*/
|
*/
|
||||||
function generateComposeID()
|
function generateComposeID()
|
||||||
{
|
{
|
||||||
return mail_bo::getRandomString();
|
return Mail::getRandomString();
|
||||||
}
|
}
|
||||||
|
|
||||||
// $_mode can be:
|
// $_mode can be:
|
||||||
@ -1520,7 +1522,7 @@ class mail_compose
|
|||||||
// with the new system it would be the identity
|
// with the new system it would be the identity
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
emailadmin_account::read_identity($addHeadInfo['X-MAILIDENTITY']);
|
Mail\Account::read_identity($addHeadInfo['X-MAILIDENTITY']);
|
||||||
$this->sessionData['mailidentity'] = $addHeadInfo['X-MAILIDENTITY'];
|
$this->sessionData['mailidentity'] = $addHeadInfo['X-MAILIDENTITY'];
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
@ -1536,7 +1538,7 @@ class mail_compose
|
|||||||
// with the new system it would the identity is the account id
|
// with the new system it would the identity is the account id
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
emailadmin_account::read($addHeadInfo['X-MAILACCOUNT']);
|
Mail\Account::read($addHeadInfo['X-MAILACCOUNT']);
|
||||||
$this->sessionData['mailaccount'] = $addHeadInfo['X-MAILACCOUNT'];
|
$this->sessionData['mailaccount'] = $addHeadInfo['X-MAILACCOUNT'];
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
@ -1553,7 +1555,7 @@ class mail_compose
|
|||||||
$this->sessionData['isDraft'] = true;
|
$this->sessionData['isDraft'] = true;
|
||||||
$foundAddresses = array();
|
$foundAddresses = array();
|
||||||
foreach((array)$headers['CC'] as $val) {
|
foreach((array)$headers['CC'] as $val) {
|
||||||
$rfcAddr=emailadmin_imapbase::parseAddressList($val);
|
$rfcAddr=Mail::parseAddressList($val);
|
||||||
$_rfcAddr = $rfcAddr[0];
|
$_rfcAddr = $rfcAddr[0];
|
||||||
if (!$_rfcAddr->valid) continue;
|
if (!$_rfcAddr->valid) continue;
|
||||||
if($_rfcAddr->mailbox == 'undisclosed-recipients' || (!$_rfcAddr->mailbox && !$_rfcAddr->host) ) {
|
if($_rfcAddr->mailbox == 'undisclosed-recipients' || (!$_rfcAddr->mailbox && !$_rfcAddr->host) ) {
|
||||||
@ -1573,7 +1575,7 @@ class mail_compose
|
|||||||
$this->sessionData['to'][] = $val;
|
$this->sessionData['to'][] = $val;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$rfcAddr=emailadmin_imapbase::parseAddressList($val);
|
$rfcAddr=Mail::parseAddressList($val);
|
||||||
$_rfcAddr = $rfcAddr[0];
|
$_rfcAddr = $rfcAddr[0];
|
||||||
if (!$_rfcAddr->valid) continue;
|
if (!$_rfcAddr->valid) continue;
|
||||||
if($_rfcAddr->mailbox == 'undisclosed-recipients' || (!$_rfcAddr->mailbox && !$_rfcAddr->host) ) {
|
if($_rfcAddr->mailbox == 'undisclosed-recipients' || (!$_rfcAddr->mailbox && !$_rfcAddr->host) ) {
|
||||||
@ -1588,7 +1590,7 @@ class mail_compose
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach((array)$headers['REPLY-TO'] as $val) {
|
foreach((array)$headers['REPLY-TO'] as $val) {
|
||||||
$rfcAddr=emailadmin_imapbase::parseAddressList($val);
|
$rfcAddr=Mail::parseAddressList($val);
|
||||||
$_rfcAddr = $rfcAddr[0];
|
$_rfcAddr = $rfcAddr[0];
|
||||||
if (!$_rfcAddr->valid) continue;
|
if (!$_rfcAddr->valid) continue;
|
||||||
if($_rfcAddr->mailbox == 'undisclosed-recipients' || (empty($_rfcAddr->mailbox) && empty($_rfcAddr->host)) ) {
|
if($_rfcAddr->mailbox == 'undisclosed-recipients' || (empty($_rfcAddr->mailbox) && empty($_rfcAddr->host)) ) {
|
||||||
@ -1603,7 +1605,7 @@ class mail_compose
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach((array)$headers['BCC'] as $val) {
|
foreach((array)$headers['BCC'] as $val) {
|
||||||
$rfcAddr=emailadmin_imapbase::parseAddressList($val);
|
$rfcAddr=Mail::parseAddressList($val);
|
||||||
$_rfcAddr = $rfcAddr[0];
|
$_rfcAddr = $rfcAddr[0];
|
||||||
if (!$_rfcAddr->valid) continue;
|
if (!$_rfcAddr->valid) continue;
|
||||||
if($_rfcAddr->mailbox == 'undisclosed-recipients' || (empty($_rfcAddr->mailbox) && empty($_rfcAddr->host)) ) {
|
if($_rfcAddr->mailbox == 'undisclosed-recipients' || (empty($_rfcAddr->mailbox) && empty($_rfcAddr->host)) ) {
|
||||||
@ -1635,7 +1637,7 @@ class mail_compose
|
|||||||
#$bodyParts[$i]['body'] = nl2br($bodyParts[$i]['body']);
|
#$bodyParts[$i]['body'] = nl2br($bodyParts[$i]['body']);
|
||||||
$bodyParts[$i]['body'] = "<pre>".$bodyParts[$i]['body']."</pre>";
|
$bodyParts[$i]['body'] = "<pre>".$bodyParts[$i]['body']."</pre>";
|
||||||
}
|
}
|
||||||
if ($bodyParts[$i]['charSet']===false) $bodyParts[$i]['charSet'] = mail_bo::detect_encoding($bodyParts[$i]['body']);
|
if ($bodyParts[$i]['charSet']===false) $bodyParts[$i]['charSet'] = Mail::detect_encoding($bodyParts[$i]['body']);
|
||||||
$bodyParts[$i]['body'] = translation::convert_jsonsafe($bodyParts[$i]['body'], $bodyParts[$i]['charSet']);
|
$bodyParts[$i]['body'] = translation::convert_jsonsafe($bodyParts[$i]['body'], $bodyParts[$i]['charSet']);
|
||||||
#error_log( "GetDraftData (HTML) CharSet:".mb_detect_encoding($bodyParts[$i]['body'] . 'a' , strtoupper($bodyParts[$i]['charSet']).','.strtoupper($this->displayCharset).',UTF-8, ISO-8859-1'));
|
#error_log( "GetDraftData (HTML) CharSet:".mb_detect_encoding($bodyParts[$i]['body'] . 'a' , strtoupper($bodyParts[$i]['charSet']).','.strtoupper($this->displayCharset).',UTF-8, ISO-8859-1'));
|
||||||
$this->sessionData['body'] .= ($i>0?"<br>":""). $bodyParts[$i]['body'] ;
|
$this->sessionData['body'] .= ($i>0?"<br>":""). $bodyParts[$i]['body'] ;
|
||||||
@ -1649,7 +1651,7 @@ class mail_compose
|
|||||||
if($i>0) {
|
if($i>0) {
|
||||||
$this->sessionData['body'] .= "<hr>";
|
$this->sessionData['body'] .= "<hr>";
|
||||||
}
|
}
|
||||||
if ($bodyParts[$i]['charSet']===false) $bodyParts[$i]['charSet'] = mail_bo::detect_encoding($bodyParts[$i]['body']);
|
if ($bodyParts[$i]['charSet']===false) $bodyParts[$i]['charSet'] = Mail::detect_encoding($bodyParts[$i]['body']);
|
||||||
$bodyParts[$i]['body'] = translation::convert_jsonsafe($bodyParts[$i]['body'], $bodyParts[$i]['charSet']);
|
$bodyParts[$i]['body'] = translation::convert_jsonsafe($bodyParts[$i]['body'], $bodyParts[$i]['charSet']);
|
||||||
#error_log( "GetDraftData (Plain) CharSet".mb_detect_encoding($bodyParts[$i]['body'] . 'a' , strtoupper($bodyParts[$i]['charSet']).','.strtoupper($this->displayCharset).',UTF-8, ISO-8859-1'));
|
#error_log( "GetDraftData (Plain) CharSet".mb_detect_encoding($bodyParts[$i]['body'] . 'a' , strtoupper($bodyParts[$i]['charSet']).','.strtoupper($this->displayCharset).',UTF-8, ISO-8859-1'));
|
||||||
$this->sessionData['body'] .= ($i>0?"\r\n":""). $bodyParts[$i]['body'] ;
|
$this->sessionData['body'] .= ($i>0?"\r\n":""). $bodyParts[$i]['body'] ;
|
||||||
@ -1769,7 +1771,7 @@ class mail_compose
|
|||||||
// check if formdata meets basic restrictions (in tmp dir, or vfs, mimetype, etc.)
|
// check if formdata meets basic restrictions (in tmp dir, or vfs, mimetype, etc.)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$tmpFileName = mail_bo::checkFileBasics($_formData,$this->composeID,false);
|
$tmpFileName = Mail::checkFileBasics($_formData,$this->composeID,false);
|
||||||
}
|
}
|
||||||
catch (egw_exception_wrong_userinput $e)
|
catch (egw_exception_wrong_userinput $e)
|
||||||
{
|
{
|
||||||
@ -2056,7 +2058,7 @@ class mail_compose
|
|||||||
//error_log(__METHOD__.__LINE__.'->'.array2string($this->mailPreferences['htmlOptions']));
|
//error_log(__METHOD__.__LINE__.'->'.array2string($this->mailPreferences['htmlOptions']));
|
||||||
$bodyParts = $mail_bo->getMessageBody($_uid, ($this->mailPreferences['htmlOptions']?$this->mailPreferences['htmlOptions']:''), $_partID);
|
$bodyParts = $mail_bo->getMessageBody($_uid, ($this->mailPreferences['htmlOptions']?$this->mailPreferences['htmlOptions']:''), $_partID);
|
||||||
//_debug_array($bodyParts);
|
//_debug_array($bodyParts);
|
||||||
$styles = mail_bo::getStyles($bodyParts);
|
$styles = Mail::getStyles($bodyParts);
|
||||||
|
|
||||||
$fromAddress = implode(', ', str_replace(array('<','>'),array('[',']'),$headers['FROM']));
|
$fromAddress = implode(', ', str_replace(array('<','>'),array('[',']'),$headers['FROM']));
|
||||||
|
|
||||||
@ -2084,7 +2086,7 @@ class mail_compose
|
|||||||
$this->sessionData['body'] = /*"<br>".*//*" ".*/"<div>".'----------------'.lang("original message").'-----------------'."".'<br>'.
|
$this->sessionData['body'] = /*"<br>".*//*" ".*/"<div>".'----------------'.lang("original message").'-----------------'."".'<br>'.
|
||||||
@htmlspecialchars(lang("from")).": ".$fromAddress."<br>".
|
@htmlspecialchars(lang("from")).": ".$fromAddress."<br>".
|
||||||
$toAddress.$ccAddress.
|
$toAddress.$ccAddress.
|
||||||
@htmlspecialchars(lang("date").": ".$headers['DATE'],ENT_QUOTES | ENT_IGNORE,mail_bo::$displayCharset, false)."<br>".
|
@htmlspecialchars(lang("date").": ".$headers['DATE'],ENT_QUOTES | ENT_IGNORE,Mail::$displayCharset, false)."<br>".
|
||||||
'----------------------------------------------------------'."</div>";
|
'----------------------------------------------------------'."</div>";
|
||||||
$this->sessionData['mimeType'] = 'html';
|
$this->sessionData['mimeType'] = 'html';
|
||||||
if (!empty($styles)) $this->sessionData['body'] .= $styles;
|
if (!empty($styles)) $this->sessionData['body'] .= $styles;
|
||||||
@ -2098,13 +2100,13 @@ class mail_compose
|
|||||||
#$bodyParts[$i]['body'] = nl2br($bodyParts[$i]['body'])."<br>";
|
#$bodyParts[$i]['body'] = nl2br($bodyParts[$i]['body'])."<br>";
|
||||||
$bodyParts[$i]['body'] = "<pre>".$bodyParts[$i]['body']."</pre>";
|
$bodyParts[$i]['body'] = "<pre>".$bodyParts[$i]['body']."</pre>";
|
||||||
}
|
}
|
||||||
if ($bodyParts[$i]['charSet']===false) $bodyParts[$i]['charSet'] = mail_bo::detect_encoding($bodyParts[$i]['body']);
|
if ($bodyParts[$i]['charSet']===false) $bodyParts[$i]['charSet'] = Mail::detect_encoding($bodyParts[$i]['body']);
|
||||||
|
|
||||||
$_htmlConfig = mail_bo::$htmLawed_config;
|
$_htmlConfig = Mail::$htmLawed_config;
|
||||||
mail_bo::$htmLawed_config['comment'] = 2;
|
Mail::$htmLawed_config['comment'] = 2;
|
||||||
mail_bo::$htmLawed_config['transform_anchor'] = false;
|
Mail::$htmLawed_config['transform_anchor'] = false;
|
||||||
$this->sessionData['body'] .= "<br>".self::_getCleanHTML(translation::convert_jsonsafe($bodyParts[$i]['body'], $bodyParts[$i]['charSet']));
|
$this->sessionData['body'] .= "<br>".self::_getCleanHTML(translation::convert_jsonsafe($bodyParts[$i]['body'], $bodyParts[$i]['charSet']));
|
||||||
mail_bo::$htmLawed_config = $_htmlConfig;
|
Mail::$htmLawed_config = $_htmlConfig;
|
||||||
#error_log( "GetReplyData (HTML) CharSet:".mb_detect_encoding($bodyParts[$i]['body'] . 'a' , strtoupper($bodyParts[$i]['charSet']).','.strtoupper($this->displayCharset).',UTF-8, ISO-8859-1'));
|
#error_log( "GetReplyData (HTML) CharSet:".mb_detect_encoding($bodyParts[$i]['body'] . 'a' , strtoupper($bodyParts[$i]['charSet']).','.strtoupper($this->displayCharset).',UTF-8, ISO-8859-1'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2116,7 +2118,7 @@ class mail_compose
|
|||||||
$this->sessionData['body'] = " \r\n \r\n".'----------------'.lang("original message").'-----------------'."\r\n".
|
$this->sessionData['body'] = " \r\n \r\n".'----------------'.lang("original message").'-----------------'."\r\n".
|
||||||
@htmlspecialchars(lang("from")).": ".$fromAddress."\r\n".
|
@htmlspecialchars(lang("from")).": ".$fromAddress."\r\n".
|
||||||
$toAddress.$ccAddress.
|
$toAddress.$ccAddress.
|
||||||
@htmlspecialchars(lang("date").": ".$headers['DATE'], ENT_QUOTES | ENT_IGNORE,mail_bo::$displayCharset, false)."\r\n".
|
@htmlspecialchars(lang("date").": ".$headers['DATE'], ENT_QUOTES | ENT_IGNORE,Mail::$displayCharset, false)."\r\n".
|
||||||
'-------------------------------------------------'."\r\n \r\n ";
|
'-------------------------------------------------'."\r\n \r\n ";
|
||||||
$this->sessionData['mimeType'] = 'plain';
|
$this->sessionData['mimeType'] = 'plain';
|
||||||
|
|
||||||
@ -2174,7 +2176,7 @@ class mail_compose
|
|||||||
if ($_useTidy && extension_loaded('tidy') )
|
if ($_useTidy && extension_loaded('tidy') )
|
||||||
{
|
{
|
||||||
$tidy = new tidy();
|
$tidy = new tidy();
|
||||||
$cleaned = $tidy->repairString($_body, mail_bo::$tidy_config,'utf8');
|
$cleaned = $tidy->repairString($_body, Mail::$tidy_config,'utf8');
|
||||||
// Found errors. Strip it all so there's some output
|
// Found errors. Strip it all so there's some output
|
||||||
if($tidy->getStatus() == 2)
|
if($tidy->getStatus() == 2)
|
||||||
{
|
{
|
||||||
@ -2186,7 +2188,7 @@ class mail_compose
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mail_bo::getCleanHTML($_body);
|
Mail::getCleanHTML($_body);
|
||||||
return preg_replace($nonDisplayAbleCharacters, '', $_body);
|
return preg_replace($nonDisplayAbleCharacters, '', $_body);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2216,7 +2218,7 @@ class mail_compose
|
|||||||
}
|
}
|
||||||
//error_log(__METHOD__."(, formDate[filemode]=$_formData[filemode], _autosaving=".array2string($_autosaving).') '.function_backtrace());
|
//error_log(__METHOD__."(, formDate[filemode]=$_formData[filemode], _autosaving=".array2string($_autosaving).') '.function_backtrace());
|
||||||
$mail_bo = $this->mail_bo;
|
$mail_bo = $this->mail_bo;
|
||||||
$activeMailProfile = emailadmin_account::read($this->mail_bo->profileID);
|
$activeMailProfile = Mail\Account::read($this->mail_bo->profileID);
|
||||||
|
|
||||||
// you need to set the sender, if you work with different identities, since most smtp servers, dont allow
|
// you need to set the sender, if you work with different identities, since most smtp servers, dont allow
|
||||||
// sending in the name of someone else
|
// sending in the name of someone else
|
||||||
@ -2225,7 +2227,7 @@ class mail_compose
|
|||||||
error_log(__METHOD__.__LINE__.' Faking From/SenderInfo for '.$activeMailProfile['ident_email'].' with ID:'.$activeMailProfile['ident_id'].'. Identitiy to use for sending:'.array2string($_identity));
|
error_log(__METHOD__.__LINE__.' Faking From/SenderInfo for '.$activeMailProfile['ident_email'].' with ID:'.$activeMailProfile['ident_id'].'. Identitiy to use for sending:'.array2string($_identity));
|
||||||
}
|
}
|
||||||
$_mailObject->setFrom($_identity['ident_email'] ? $_identity['ident_email'] : $activeMailProfile['ident_email'],
|
$_mailObject->setFrom($_identity['ident_email'] ? $_identity['ident_email'] : $activeMailProfile['ident_email'],
|
||||||
mail_bo::generateIdentityString($_identity,false));
|
Mail::generateIdentityString($_identity,false));
|
||||||
|
|
||||||
$_mailObject->addHeader('X-Priority', $_formData['priority']);
|
$_mailObject->addHeader('X-Priority', $_formData['priority']);
|
||||||
$_mailObject->addHeader('X-Mailer', 'EGroupware-Mail');
|
$_mailObject->addHeader('X-Mailer', 'EGroupware-Mail');
|
||||||
@ -2274,7 +2276,7 @@ class mail_compose
|
|||||||
$_mailObject->addHeader('Subject', $_formData['subject']);
|
$_mailObject->addHeader('Subject', $_formData['subject']);
|
||||||
|
|
||||||
// this should never happen since we come from the edit dialog
|
// this should never happen since we come from the edit dialog
|
||||||
if (mail_bo::detect_qp($_formData['body'])) {
|
if (Mail::detect_qp($_formData['body'])) {
|
||||||
//error_log("Error: bocompose::createMessage found QUOTED-PRINTABLE while Composing Message. Charset:$realCharset Message:".print_r($_formData['body'],true));
|
//error_log("Error: bocompose::createMessage found QUOTED-PRINTABLE while Composing Message. Charset:$realCharset Message:".print_r($_formData['body'],true));
|
||||||
$_formData['body'] = preg_replace('/=\r\n/', '', $_formData['body']);
|
$_formData['body'] = preg_replace('/=\r\n/', '', $_formData['body']);
|
||||||
$_formData['body'] = quoted_printable_decode($_formData['body']);
|
$_formData['body'] = quoted_printable_decode($_formData['body']);
|
||||||
@ -2303,7 +2305,7 @@ class mail_compose
|
|||||||
/* should be handled by identity object itself
|
/* should be handled by identity object itself
|
||||||
if($signature)
|
if($signature)
|
||||||
{
|
{
|
||||||
$signature = mail_bo::merge($signature,array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
$signature = Mail::merge($signature,array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
if ($_formData['attachments'] && $_formData['filemode'] != Vfs\Sharing::ATTACH && !$_autosaving)
|
if ($_formData['attachments'] && $_formData['filemode'] != Vfs\Sharing::ATTACH && !$_autosaving)
|
||||||
@ -2340,7 +2342,7 @@ class mail_compose
|
|||||||
$_mailObject->setBody($this->convertHTMLToText($body, true, true));
|
$_mailObject->setBody($this->convertHTMLToText($body, true, true));
|
||||||
}
|
}
|
||||||
// convert URL Images to inline images - if possible
|
// convert URL Images to inline images - if possible
|
||||||
if (!$_autosaving) mail_bo::processURL2InlineImages($_mailObject, $body, $mail_bo);
|
if (!$_autosaving) Mail::processURL2InlineImages($_mailObject, $body, $mail_bo);
|
||||||
if (strpos($body,"<!-- HTMLSIGBEGIN -->")!==false)
|
if (strpos($body,"<!-- HTMLSIGBEGIN -->")!==false)
|
||||||
{
|
{
|
||||||
$body = str_replace(array('<!-- HTMLSIGBEGIN -->','<!-- HTMLSIGEND -->'),'',$body);
|
$body = str_replace(array('<!-- HTMLSIGBEGIN -->','<!-- HTMLSIGEND -->'),'',$body);
|
||||||
@ -2659,9 +2661,9 @@ class mail_compose
|
|||||||
$this->sessionData['attachments'] = $_formData['attachments'];
|
$this->sessionData['attachments'] = $_formData['attachments'];
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$acc = emailadmin_account::read($this->sessionData['mailaccount']);
|
$acc = Mail\Account::read($this->sessionData['mailaccount']);
|
||||||
//error_log(__METHOD__.__LINE__.array2string($acc));
|
//error_log(__METHOD__.__LINE__.array2string($acc));
|
||||||
$identity = emailadmin_account::read_identity($acc['ident_id'],true);
|
$identity = Mail\Account::read_identity($acc['ident_id'],true);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
@ -2797,7 +2799,7 @@ class mail_compose
|
|||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$identity = emailadmin_account::read_identity((int)$this->sessionData['mailidentity'],true);
|
$identity = Mail\Account::read_identity((int)$this->sessionData['mailidentity'],true);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
@ -3207,7 +3209,7 @@ class mail_compose
|
|||||||
if (empty($content['mailidentity']))
|
if (empty($content['mailidentity']))
|
||||||
{
|
{
|
||||||
$default_identity = null;
|
$default_identity = null;
|
||||||
foreach(emailadmin_account::identities($this->mail_bo->profileID, true, 'params') as $identity)
|
foreach(Mail\Account::identities($this->mail_bo->profileID, true, 'params') as $identity)
|
||||||
{
|
{
|
||||||
if (!isset($default_identity)) $default_identity = $identity['ident_id'];
|
if (!isset($default_identity)) $default_identity = $identity['ident_id'];
|
||||||
if (!empty($identity['ident_signature']))
|
if (!empty($identity['ident_signature']))
|
||||||
@ -3271,7 +3273,7 @@ class mail_compose
|
|||||||
{
|
{
|
||||||
$useCacheIfPossible = true;
|
$useCacheIfPossible = true;
|
||||||
}
|
}
|
||||||
$searchString = translation::convert($_searchString, mail_bo::$displayCharset,'UTF7-IMAP');
|
$searchString = translation::convert($_searchString, Mail::$displayCharset,'UTF7-IMAP');
|
||||||
foreach ($folderObjects as $k =>$fA)
|
foreach ($folderObjects as $k =>$fA)
|
||||||
{
|
{
|
||||||
//error_log(__METHOD__.__LINE__.$_searchString.'/'.$searchString.' in '.$k.'->'.$fA->displayName);
|
//error_log(__METHOD__.__LINE__.$_searchString.'/'.$searchString.' in '.$k.'->'.$fA->displayName);
|
||||||
@ -3362,7 +3364,7 @@ class mail_compose
|
|||||||
foreach(array($contact['email'],$contact['email_home']) as $email) {
|
foreach(array($contact['email'],$contact['email_home']) as $email) {
|
||||||
// avoid wrong addresses, if an rfc822 encoded address is in addressbook
|
// avoid wrong addresses, if an rfc822 encoded address is in addressbook
|
||||||
//$email = preg_replace("/(^.*<)([a-zA-Z0-9_\-]+@[a-zA-Z0-9_\-\.]+)(.*)/",'$2',$email);
|
//$email = preg_replace("/(^.*<)([a-zA-Z0-9_\-]+@[a-zA-Z0-9_\-\.]+)(.*)/",'$2',$email);
|
||||||
$rfcAddr = emailadmin_imapbase::parseAddressList($email);
|
$rfcAddr = Mail::parseAddressList($email);
|
||||||
$_rfcAddr=$rfcAddr->first();
|
$_rfcAddr=$rfcAddr->first();
|
||||||
if (!$_rfcAddr->valid)
|
if (!$_rfcAddr->valid)
|
||||||
{
|
{
|
||||||
@ -3495,7 +3497,7 @@ class mail_compose
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapper for etemplate_new::ajax_process_content to be able to identify send request to select different fpm pool
|
* Wrapper for Api\Etemplate::ajax_process_content to be able to identify send request to select different fpm pool
|
||||||
*
|
*
|
||||||
* @param string $etemplate_exec_id
|
* @param string $etemplate_exec_id
|
||||||
* @param array $content
|
* @param array $content
|
||||||
@ -3505,8 +3507,8 @@ class mail_compose
|
|||||||
static public function ajax_send($etemplate_exec_id, array $content, $no_validation)
|
static public function ajax_send($etemplate_exec_id, array $content, $no_validation)
|
||||||
{
|
{
|
||||||
// setting menuaction is required as it triggers different behavior eg. in egw_framework::window_close()
|
// setting menuaction is required as it triggers different behavior eg. in egw_framework::window_close()
|
||||||
$_GET['menuaction'] = 'etemplate_new::ajax_process_content';
|
$_GET['menuaction'] = 'Api\Etemplate::ajax_process_content';
|
||||||
|
|
||||||
return etemplate_new::ajax_process_content($etemplate_exec_id, $content, $no_validation);
|
return Api\Etemplate::ajax_process_content($etemplate_exec_id, $content, $no_validation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,14 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @package mail
|
* @package mail
|
||||||
* @author Stylite AG [info@stylite.de]
|
* @author Stylite AG [info@stylite.de]
|
||||||
* @copyright (c) 2013 by Stylite AG <info-AT-stylite.de>
|
* @copyright (c) 2013-16 by Stylite AG <info-AT-stylite.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class containing admin, preferences and sidebox-menus and other hooks
|
* Class containing admin, preferences and sidebox-menus and other hooks
|
||||||
*/
|
*/
|
||||||
@ -24,8 +27,8 @@ class mail_hooks
|
|||||||
{
|
{
|
||||||
$actions = array();
|
$actions = array();
|
||||||
|
|
||||||
$account = emailadmin_account::read($data['acc_id'], $data['account_id']);
|
$account = Mail\Account::read($data['acc_id'], $data['account_id']);
|
||||||
if (emailadmin_account::is_multiple($account) && $account['acc_imap_admin_username'] ||
|
if (Mail\Account::is_multiple($account) && $account['acc_imap_admin_username'] ||
|
||||||
$account['acc_imap_type'] == 'managementserver_imap')
|
$account['acc_imap_type'] == 'managementserver_imap')
|
||||||
{
|
{
|
||||||
translation::add_app('mail');
|
translation::add_app('mail');
|
||||||
@ -463,18 +466,18 @@ class mail_hooks
|
|||||||
$profileID = (int)$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'];
|
$profileID = (int)$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'];
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$mail_bo = mail_bo::getInstance(true,$profileID);
|
$mail_bo = Mail::getInstance(true,$profileID);
|
||||||
$profileID = $GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'] = $mail_bo->profileID;
|
$profileID = $GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'] = $mail_bo->profileID;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
//error_log(__METHOD__."()" . $e->getMessage());
|
//error_log(__METHOD__."()" . $e->getMessage());
|
||||||
$profileID = emailadmin_account::get_default_acc_id();
|
$profileID = Mail\Account::get_default_acc_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
$preferences =& $mail_bo->mailPreferences;
|
$preferences =& $mail_bo->mailPreferences;
|
||||||
$serverCounter = $sieveEnabledServerCounter = 0;
|
$serverCounter = $sieveEnabledServerCounter = 0;
|
||||||
// account select box
|
// account select box
|
||||||
$selectedID = $profileID;
|
$selectedID = $profileID;
|
||||||
$allAccountData = emailadmin_account::search($only_current_user=true, $just_name=false, $order_by=null);
|
$allAccountData = Mail\Account::search($only_current_user=true, $just_name=false, $order_by=null);
|
||||||
if ($allAccountData) {
|
if ($allAccountData) {
|
||||||
$rememberFirst=$selectedFound=null;
|
$rememberFirst=$selectedFound=null;
|
||||||
foreach ($allAccountData as $tmpkey => $icServers)
|
foreach ($allAccountData as $tmpkey => $icServers)
|
||||||
@ -534,7 +537,7 @@ class mail_hooks
|
|||||||
display_sidebox($appname,lang('Admin'),$file);
|
display_sidebox($appname,lang('Admin'),$file);
|
||||||
}
|
}
|
||||||
hooks::pgp_encryption_menu('mail');
|
hooks::pgp_encryption_menu('mail');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -545,22 +548,22 @@ class mail_hooks
|
|||||||
static function notification_check_mailbox()
|
static function notification_check_mailbox()
|
||||||
{
|
{
|
||||||
// should not run more often then every 3 minutes;
|
// should not run more often then every 3 minutes;
|
||||||
$lastRun = egw_cache::getCache(egw_cache::INSTANCE,'email','mailNotifyLastRun'.trim($GLOBALS['egw_info']['user']['account_id']),null,array(),$expiration=60*60*24*2);
|
$lastRun = Api\Cache::getCache(Api\Cache::INSTANCE,'email','mailNotifyLastRun'.trim($GLOBALS['egw_info']['user']['account_id']),null,array(),$expiration=60*60*24*2);
|
||||||
$currentTime = time();
|
$currentTime = time();
|
||||||
if (!empty($lastRun) && $lastRun>$currentTime-3*60)
|
if (!empty($lastRun) && $lastRun>$currentTime-3*60)
|
||||||
{
|
{
|
||||||
//error_log(__METHOD__.__LINE__." Job should not run too often; we limit this to once every 3 Minutes :". ($currentTime-$lastRun). " Seconds to go!");
|
//error_log(__METHOD__.__LINE__." Job should not run too often; we limit this to once every 3 Minutes :". ($currentTime-$lastRun). " Seconds to go!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
$accountsToSearchObj = emailadmin_account::search($only_current_user=true, $just_name=true);
|
$accountsToSearchObj = Mail\Account::search($only_current_user=true, $just_name=true);
|
||||||
|
|
||||||
foreach($accountsToSearchObj as $acc_id => $identity_name)
|
foreach($accountsToSearchObj as $acc_id => $identity_name)
|
||||||
{
|
{
|
||||||
//error_log(__METHOD__.__LINE__.' '.$acc_id.':'.$identity_name);
|
//error_log(__METHOD__.__LINE__.' '.$acc_id.':'.$identity_name);
|
||||||
$folders2notify[$acc_id] = emailadmin_notifications::read($acc_id);// read all, even those set for acc_id 0 (folders for all acounts?)
|
$folders2notify[$acc_id] = Mail\Notifications::read($acc_id);// read all, even those set for acc_id 0 (folders for all acounts?)
|
||||||
$accountsToSearchArray[$acc_id] = str_replace(array('<','>'),array('[',']'),$identity_name);
|
$accountsToSearchArray[$acc_id] = str_replace(array('<','>'),array('[',']'),$identity_name);
|
||||||
}
|
}
|
||||||
$notified_mail_uidsCache = egw_cache::getCache(egw_cache::INSTANCE,'email','notified_mail_uids'.trim($GLOBALS['egw_info']['user']['account_id']),null,array(),$expiration=60*60*24*2);
|
$notified_mail_uidsCache = Api\Cache::getCache(Api\Cache::INSTANCE,'email','notified_mail_uids'.trim($GLOBALS['egw_info']['user']['account_id']),null,array(),$expiration=60*60*24*2);
|
||||||
//error_log(__METHOD__.__LINE__.array2string($notified_mail_uidsCache));
|
//error_log(__METHOD__.__LINE__.array2string($notified_mail_uidsCache));
|
||||||
if (!is_array($folders2notify)) return true;
|
if (!is_array($folders2notify)) return true;
|
||||||
foreach ($folders2notify as $nFKey =>$notifyfolders)
|
foreach ($folders2notify as $nFKey =>$notifyfolders)
|
||||||
@ -577,7 +580,7 @@ class mail_hooks
|
|||||||
//error_log(__METHOD__.__LINE__.' (user: '.$currentRecipient->account_lid.') Active Profile:'.$activeProfile);
|
//error_log(__METHOD__.__LINE__.' (user: '.$currentRecipient->account_lid.') Active Profile:'.$activeProfile);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$bomail = mail_bo::getInstance(false, $activeProfile,false);
|
$bomail = Mail::getInstance(false, $activeProfile,false);
|
||||||
} catch (Exception $e)
|
} catch (Exception $e)
|
||||||
{
|
{
|
||||||
error_log(__METHOD__.__LINE__.' (user: '.$currentRecipient->account_lid.') notification for Profile:'.$activeProfile.' failed.'.$e->getMessage());
|
error_log(__METHOD__.__LINE__.' (user: '.$currentRecipient->account_lid.') notification for Profile:'.$activeProfile.' failed.'.$e->getMessage());
|
||||||
@ -644,7 +647,7 @@ class mail_hooks
|
|||||||
'mail_uid' => $recent_message['uid'],
|
'mail_uid' => $recent_message['uid'],
|
||||||
'mail_folder' => $recent_message['folder_display_name'],
|
'mail_folder' => $recent_message['folder_display_name'],
|
||||||
'mail_folder_base64' => $recent_message['folder_base64'],
|
'mail_folder_base64' => $recent_message['folder_base64'],
|
||||||
'mail_subject' => mail_bo::adaptSubjectForImport($recent_message['subject']),
|
'mail_subject' => Mail::adaptSubjectForImport($recent_message['subject']),
|
||||||
'mail_from' => !empty($recent_message['sender_name']) ? $recent_message['sender_name'] : $recent_message['sender_address'],
|
'mail_from' => !empty($recent_message['sender_name']) ? $recent_message['sender_name'] : $recent_message['sender_address'],
|
||||||
'mail_received' => $recent_message['date'],
|
'mail_received' => $recent_message['date'],
|
||||||
);
|
);
|
||||||
@ -665,13 +668,13 @@ class mail_hooks
|
|||||||
$notification->set_skip_backends(array('email'));
|
$notification->set_skip_backends(array('email'));
|
||||||
$notification->send();
|
$notification->send();
|
||||||
}
|
}
|
||||||
egw_cache::setCache(egw_cache::INSTANCE,'email','notified_mail_uids'.trim($GLOBALS['egw_info']['user']['account_id']),$notified_mail_uidsCache, $expiration=60*60*24*2);
|
Api\Cache::setCache(Api\Cache::INSTANCE,'email','notified_mail_uids'.trim($GLOBALS['egw_info']['user']['account_id']),$notified_mail_uidsCache, $expiration=60*60*24*2);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
// fail silently per server, if possible
|
// fail silently per server, if possible
|
||||||
error_log(__METHOD__.__LINE__.' Notification on new messages for Profile '.$activeProfile.' ('.$accountsToSearchArray[$activeProfile].') failed:'.$e->getMessage());
|
error_log(__METHOD__.__LINE__.' Notification on new messages for Profile '.$activeProfile.' ('.$accountsToSearchArray[$activeProfile].') failed:'.$e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
egw_cache::setCache(egw_cache::INSTANCE,'email','mailNotifyLastRun'.trim($GLOBALS['egw_info']['user']['account_id']),time(), $expiration=60*60*24*2);
|
Api\Cache::setCache(Api\Cache::INSTANCE,'email','mailNotifyLastRun'.trim($GLOBALS['egw_info']['user']['account_id']),time(), $expiration=60*60*24*2);
|
||||||
//error_log(__METHOD__.__LINE__.array2string($notified_mail_uidsCache));
|
//error_log(__METHOD__.__LINE__.array2string($notified_mail_uidsCache));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @package mail
|
* @package mail
|
||||||
* @author Hadi Nategh [hn@stylite.de]
|
* @author Hadi Nategh [hn@stylite.de]
|
||||||
* @copyright (c) 2015 by Stylite AG <info-AT-stylite.de>
|
* @copyright (c) 2015-16 by Stylite AG <info-AT-stylite.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id:$
|
* @version $Id:$
|
||||||
*/
|
*/
|
||||||
@ -66,22 +66,22 @@ class mail_integration {
|
|||||||
{
|
{
|
||||||
// App name which is called for integration
|
// App name which is called for integration
|
||||||
$app = isset($GLOBALS['egw_info']['user']['apps'][$_GET['app']])? $_GET['app'] : null;
|
$app = isset($GLOBALS['egw_info']['user']['apps'][$_GET['app']])? $_GET['app'] : null;
|
||||||
|
|
||||||
// preset app entry id, selected by user from app_entry_dialog
|
// preset app entry id, selected by user from app_entry_dialog
|
||||||
$app_entry_id = $_GET['entry_id'];
|
$app_entry_id = $_GET['entry_id'];
|
||||||
|
|
||||||
// Set the date
|
// Set the date
|
||||||
if (!$_date)
|
if (!$_date)
|
||||||
{
|
{
|
||||||
$time = time();
|
$time = time();
|
||||||
$_date = egw_time::server2user($time->now,'ts');
|
$_date = egw_time::server2user($time->now,'ts');
|
||||||
}
|
}
|
||||||
|
|
||||||
// For dealing with multiple files of the same name
|
// For dealing with multiple files of the same name
|
||||||
$dupe_count = $file_list = array();
|
$dupe_count = $file_list = array();
|
||||||
|
|
||||||
$GLOBALS['egw_info']['flags']['currentapp'] = $app;
|
$GLOBALS['egw_info']['flags']['currentapp'] = $app;
|
||||||
//error_log(__METHOD__.__LINE__.': RowID:'.$_GET['rowid'].': emailAddress:'. array2string($_to_emailAddress).' && '.$app);
|
//error_log(__METHOD__.__LINE__.': RowID:'.$_GET['rowid'].': emailAddress:'. array2string($_to_emailAddress).' && '.$app);
|
||||||
// Integrate not yet saved mail
|
// Integrate not yet saved mail
|
||||||
if (empty($_GET['rowid']) && $_to_emailAddress && $app)
|
if (empty($_GET['rowid']) && $_to_emailAddress && $app)
|
||||||
{
|
{
|
||||||
@ -258,7 +258,7 @@ class mail_integration {
|
|||||||
$mailcontent['date'] = strtotime($mailcontent['headers']['DATE']);
|
$mailcontent['date'] = strtotime($mailcontent['headers']['DATE']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert addresses to email and personal
|
// Convert addresses to email and personal
|
||||||
$addresses = imap_rfc822_parse_adrlist($mailcontent['mailaddress'],'');
|
$addresses = imap_rfc822_parse_adrlist($mailcontent['mailaddress'],'');
|
||||||
foreach ($addresses as $address)
|
foreach ($addresses as $address)
|
||||||
@ -293,12 +293,12 @@ class mail_integration {
|
|||||||
if ($uid && !$mailcontent['attachments'][$key]['add_raw'])
|
if ($uid && !$mailcontent['attachments'][$key]['add_raw'])
|
||||||
{
|
{
|
||||||
$data_attachments[$key]['egw_data'] = egw_link::set_data($mailcontent['attachments'][$key]['mimeType'],
|
$data_attachments[$key]['egw_data'] = egw_link::set_data($mailcontent['attachments'][$key]['mimeType'],
|
||||||
'emailadmin_imapbase::getAttachmentAccount',array($icServerID, $mailbox, $uid, $attachment['partID'], $is_winmail, true),true);
|
'EGroupware\\Api\\Mail::getAttachmentAccount',array($icServerID, $mailbox, $uid, $attachment['partID'], $is_winmail, true),true);
|
||||||
}
|
}
|
||||||
unset($mailcontent['attachments'][$key]['add_raw']);
|
unset($mailcontent['attachments'][$key]['add_raw']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the hook is registered
|
// Check if the hook is registered
|
||||||
if ($GLOBALS['egw']->hooks->hook_exists('mail_import',$app) == 0)
|
if ($GLOBALS['egw']->hooks->hook_exists('mail_import',$app) == 0)
|
||||||
{
|
{
|
||||||
@ -308,14 +308,14 @@ class mail_integration {
|
|||||||
throw new egw_exception_assertion_failed('Hook import_mail registration faild for '.$app.' app! Please, contact your system admin in order to clear cache and register hooks.');
|
throw new egw_exception_assertion_failed('Hook import_mail registration faild for '.$app.' app! Please, contact your system admin in order to clear cache and register hooks.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the registered hook method of requested app for integration
|
// Get the registered hook method of requested app for integration
|
||||||
$hook = $GLOBALS['egw']->hooks->single(array('location' => 'mail_import'),$app);
|
$hook = $GLOBALS['egw']->hooks->single(array('location' => 'mail_import'),$app);
|
||||||
|
|
||||||
// Load translation for the app since the original URL
|
// Load translation for the app since the original URL
|
||||||
// is from mail integration and only loads mail translation
|
// is from mail integration and only loads mail translation
|
||||||
translation::add_app($app);
|
translation::add_app($app);
|
||||||
|
|
||||||
// Execute import mail with provided content
|
// Execute import mail with provided content
|
||||||
ExecMethod($hook['menuaction'],array (
|
ExecMethod($hook['menuaction'],array (
|
||||||
'addresses' => $data_addresses,
|
'addresses' => $data_addresses,
|
||||||
|
@ -5,11 +5,14 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @package mail
|
* @package mail
|
||||||
* @author Hadi Nategh [hn@stylite.de]
|
* @author Hadi Nategh [hn@stylite.de]
|
||||||
* @copyright (c) 2013 by Hadi Nategh <hn-AT-stylite.de>
|
* @copyright (c) 2013-16 by Hadi Nategh <hn-AT-stylite.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
class mail_sieve
|
class mail_sieve
|
||||||
{
|
{
|
||||||
var $public_functions = array(
|
var $public_functions = array(
|
||||||
@ -38,7 +41,7 @@ class mail_sieve
|
|||||||
/**
|
/**
|
||||||
* account object
|
* account object
|
||||||
*
|
*
|
||||||
* @var emailadmin_account
|
* @var Mail\Account
|
||||||
*/
|
*/
|
||||||
var $account;
|
var $account;
|
||||||
|
|
||||||
@ -61,16 +64,16 @@ class mail_sieve
|
|||||||
*/
|
*/
|
||||||
function __construct()
|
function __construct()
|
||||||
{
|
{
|
||||||
$this->displayCharset = translation::charset();
|
$this->displayCharset = Api\Translation::charset();
|
||||||
$this->mail_admin = isset($GLOBALS['egw_info']['user']['apps']['emailadmin']);
|
$this->mail_admin = isset($GLOBALS['egw_info']['user']['apps']['emailadmin']);
|
||||||
$this->mailConfig = config::read('mail');
|
$this->mailConfig = Api\Config::read('mail');
|
||||||
|
|
||||||
$acc_id = isset($_GET['acc_id']) ? (int)$_GET['acc_id'] : egw_cache::getSession(__CLASS__, 'acc_id');
|
$acc_id = isset($_GET['acc_id']) ? (int)$_GET['acc_id'] : Api\Cache::getSession(__CLASS__, 'acc_id');
|
||||||
if ($acc_id > 0)
|
if ($acc_id > 0)
|
||||||
{
|
{
|
||||||
$this->account = emailadmin_account::read($acc_id);
|
$this->account = Mail\Account::read($acc_id);
|
||||||
$identity = emailadmin_account::read_identity($this->account->ident_id,true);
|
$identity = Mail\Account::read_identity($this->account->ident_id,true);
|
||||||
$this->currentIdentity = mail_bo::generateIdentityString($identity,false);
|
$this->currentIdentity = Mail::generateIdentityString($identity,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->restoreSessionData();
|
$this->restoreSessionData();
|
||||||
@ -86,10 +89,10 @@ class mail_sieve
|
|||||||
{
|
{
|
||||||
if (!is_array($content))
|
if (!is_array($content))
|
||||||
{
|
{
|
||||||
egw_cache::setSession(__CLASS__, 'acc_id', $this->account->acc_id);
|
Api\Cache::setSession(__CLASS__, 'acc_id', $this->account->acc_id);
|
||||||
}
|
}
|
||||||
//Instantiate an etemplate_new object
|
//Instantiate an Api\Etemplate object
|
||||||
$tmpl = new etemplate_new('mail.sieve.index');
|
$tmpl = new Api\Etemplate('mail.sieve.index');
|
||||||
|
|
||||||
if ($msg)
|
if ($msg)
|
||||||
{
|
{
|
||||||
@ -102,7 +105,7 @@ class mail_sieve
|
|||||||
$content['rg']= $this->get_rows();
|
$content['rg']= $this->get_rows();
|
||||||
|
|
||||||
// Set content-menu actions
|
// Set content-menu actions
|
||||||
$tmpl->set_cell_attribute('rg', 'actions',$this->get_actions());
|
$tmpl->setElementAttribute('rg', 'actions',$this->get_actions());
|
||||||
|
|
||||||
$sel_options = array(
|
$sel_options = array(
|
||||||
'status' => array(
|
'status' => array(
|
||||||
@ -128,8 +131,8 @@ class mail_sieve
|
|||||||
*/
|
*/
|
||||||
function editEmailNotification($content=null, $msg='')
|
function editEmailNotification($content=null, $msg='')
|
||||||
{
|
{
|
||||||
//Instantiate an etemplate_new object, representing sieve.emailNotification
|
//Instantiate an Api\Etemplate object, representing sieve.emailNotification
|
||||||
$eNotitmpl = new etemplate_new('mail.sieve.emailNotification');
|
$eNotitmpl = new Api\Etemplate('mail.sieve.emailNotification');
|
||||||
|
|
||||||
if ($this->account->acc_sieve_enabled)
|
if ($this->account->acc_sieve_enabled)
|
||||||
{
|
{
|
||||||
@ -191,7 +194,7 @@ class mail_sieve
|
|||||||
|
|
||||||
case 'cancel':
|
case 'cancel':
|
||||||
egw_framework::window_close();
|
egw_framework::window_close();
|
||||||
common::egw_exit();
|
exit;
|
||||||
}
|
}
|
||||||
$this->saveSessionData();
|
$this->saveSessionData();
|
||||||
}
|
}
|
||||||
@ -223,8 +226,8 @@ class mail_sieve
|
|||||||
*/
|
*/
|
||||||
function edit ($content=null)
|
function edit ($content=null)
|
||||||
{
|
{
|
||||||
//Instantiate an etemplate_new object, representing sieve.edit template
|
//Instantiate an Api\Etemplate object, representing sieve.edit template
|
||||||
$etmpl = new etemplate_new('mail.sieve.edit');
|
$etmpl = new Api\Etemplate('mail.sieve.edit');
|
||||||
$etmpl->setElementAttribute('action_folder_text','autocomplete_params', array('noPrefixId'=> true));
|
$etmpl->setElementAttribute('action_folder_text','autocomplete_params', array('noPrefixId'=> true));
|
||||||
if (!is_array($content))
|
if (!is_array($content))
|
||||||
{
|
{
|
||||||
@ -357,7 +360,7 @@ class mail_sieve
|
|||||||
|
|
||||||
case 'cancel':
|
case 'cancel':
|
||||||
egw_framework::window_close();
|
egw_framework::window_close();
|
||||||
common::egw_exit();
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$sel_options = array(//array_merge($sel_options,array(
|
$sel_options = array(//array_merge($sel_options,array(
|
||||||
@ -373,7 +376,7 @@ class mail_sieve
|
|||||||
0 => 'raw',
|
0 => 'raw',
|
||||||
1 => 'text',
|
1 => 'text',
|
||||||
),
|
),
|
||||||
'ctype' => emailadmin_script::$btransform_ctype_array,
|
'ctype' => Mail\Script::$btransform_ctype_array,
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -463,8 +466,8 @@ class mail_sieve
|
|||||||
*/
|
*/
|
||||||
function editVacation($content=null, $msg='')
|
function editVacation($content=null, $msg='')
|
||||||
{
|
{
|
||||||
//Instantiate an etemplate_new object, representing the sieve.vacation template
|
//Instantiate an Api\Etemplate object, representing the sieve.vacation template
|
||||||
$vtmpl = new etemplate_new('mail.sieve.vacation');
|
$vtmpl = new Api\Etemplate('mail.sieve.vacation');
|
||||||
$vacation = array();
|
$vacation = array();
|
||||||
|
|
||||||
if (isset($_GET['account_id'])) $account_id = $preserv['account_id'] = $_GET['account_id'];
|
if (isset($_GET['account_id'])) $account_id = $preserv['account_id'] = $_GET['account_id'];
|
||||||
@ -476,11 +479,11 @@ class mail_sieve
|
|||||||
}
|
}
|
||||||
if(isset($account_id) && $this->mail_admin)
|
if(isset($account_id) && $this->mail_admin)
|
||||||
{
|
{
|
||||||
foreach(emailadmin_account::search($account_id, false, null, false, 0, false) as $account)
|
foreach(Mail\Account::search($account_id, false, null, false, 0, false) as $account)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
// check if account is valid for multiple users, has admin credentials and sieve enabled
|
// check if account is valid for multiple users, has admin credentials and sieve enabled
|
||||||
if (emailadmin_account::is_multiple($account) &&
|
if (Mail\Account::is_multiple($account) &&
|
||||||
($icServer = $account->imapServer(true)) && // check on icServer object, so plugins can overwrite
|
($icServer = $account->imapServer(true)) && // check on icServer object, so plugins can overwrite
|
||||||
$icServer->acc_imap_admin_username && $icServer->acc_sieve_enabled)
|
$icServer->acc_imap_admin_username && $icServer->acc_sieve_enabled)
|
||||||
{
|
{
|
||||||
@ -508,12 +511,12 @@ class mail_sieve
|
|||||||
}
|
}
|
||||||
elseif(!is_array($content) && isset($_GET['acc_id']))
|
elseif(!is_array($content) && isset($_GET['acc_id']))
|
||||||
{
|
{
|
||||||
$this->account = emailadmin_account::read($_GET['acc_id']);
|
$this->account = Mail\Account::read($_GET['acc_id']);
|
||||||
$preserv['acc_id'] = $this->account->acc_id;
|
$preserv['acc_id'] = $this->account->acc_id;
|
||||||
}
|
}
|
||||||
elseif ($content['acc_id'])
|
elseif ($content['acc_id'])
|
||||||
{
|
{
|
||||||
$this->account = emailadmin_account::read($content['acc_id']);
|
$this->account = Mail\Account::read($content['acc_id']);
|
||||||
$preserv['acc_id'] = $content['acc_id'];
|
$preserv['acc_id'] = $content['acc_id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,7 +581,7 @@ class mail_sieve
|
|||||||
// store text as default
|
// store text as default
|
||||||
if ($content['set_as_default'] == 1 && $content['text'])
|
if ($content['set_as_default'] == 1 && $content['text'])
|
||||||
{
|
{
|
||||||
config::save_value('default_vacation_text', $content['text'], 'mail');
|
Api\Config::save_value('default_vacation_text', $content['text'], 'mail');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isset($content['status']))
|
if (isset($content['status']))
|
||||||
@ -637,15 +640,15 @@ class mail_sieve
|
|||||||
if (isset($account_id) && $this->mail_admin)
|
if (isset($account_id) && $this->mail_admin)
|
||||||
{
|
{
|
||||||
$account_lid = accounts::id2name($account_id,'account_lid');
|
$account_lid = accounts::id2name($account_id,'account_lid');
|
||||||
$cachedVacations = array($icServer->acc_id => $newVacation) + (array)egw_cache::getCache(egw_cache::INSTANCE, 'email', 'vacationNotice'.$account_lid);
|
$cachedVacations = array($icServer->acc_id => $newVacation) + (array)Api\Cache::getCache(Api\Cache::INSTANCE, 'email', 'vacationNotice'.$account_lid);
|
||||||
//error_log(__METHOD__.__LINE__.' Setting Cache for '.$account_lid.':'.array2string($cachedVacations));
|
//error_log(__METHOD__.__LINE__.' Setting Cache for '.$account_lid.':'.array2string($cachedVacations));
|
||||||
egw_cache::setCache(egw_cache::INSTANCE,'email', 'vacationNotice'.$account_lid, $cachedVacations);
|
Api\Cache::setCache(Api\Cache::INSTANCE,'email', 'vacationNotice'.$account_lid, $cachedVacations);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$cachedVacations = array($icServer->acc_id => $newVacation) + (array)egw_cache::getCache(egw_cache::INSTANCE, 'email', 'vacationNotice'.$GLOBALS['egw_info']['user']['account_lid']);
|
$cachedVacations = array($icServer->acc_id => $newVacation) + (array)Api\Cache::getCache(Api\Cache::INSTANCE, 'email', 'vacationNotice'.$GLOBALS['egw_info']['user']['account_lid']);
|
||||||
//error_log(__METHOD__.__LINE__.' Setting Cache for own ('.$GLOBALS['egw_info']['user']['account_lid'].'):'.array2string($cachedVacations));
|
//error_log(__METHOD__.__LINE__.' Setting Cache for own ('.$GLOBALS['egw_info']['user']['account_lid'].'):'.array2string($cachedVacations));
|
||||||
egw_cache::setCache(egw_cache::INSTANCE,'email', 'vacationNotice'.$GLOBALS['egw_info']['user']['account_lid'], $cachedVacations);
|
Api\Cache::setCache(Api\Cache::INSTANCE,'email', 'vacationNotice'.$GLOBALS['egw_info']['user']['account_lid'], $cachedVacations);
|
||||||
}
|
}
|
||||||
$msg = lang('Vacation notice sucessfully updated.');
|
$msg = lang('Vacation notice sucessfully updated.');
|
||||||
}
|
}
|
||||||
@ -715,7 +718,7 @@ class mail_sieve
|
|||||||
static function strip_rfc882_addresses($_addresses)
|
static function strip_rfc882_addresses($_addresses)
|
||||||
{
|
{
|
||||||
$addresses = array();
|
$addresses = array();
|
||||||
foreach(emailadmin_imapbase::parseAddressList($_addresses) as $addr)
|
foreach(Mail::parseAddressList($_addresses) as $addr)
|
||||||
{
|
{
|
||||||
if ($addr->valid)
|
if ($addr->valid)
|
||||||
{
|
{
|
||||||
@ -774,7 +777,7 @@ class mail_sieve
|
|||||||
{
|
{
|
||||||
//error_log(__METHOD__.'('.array2string($_vacation).')');
|
//error_log(__METHOD__.'('.array2string($_vacation).')');
|
||||||
|
|
||||||
$account = emailadmin_account::read($_vacation['acc_id'], $_vacation['account_id']);
|
$account = Mail\Account::read($_vacation['acc_id'], $_vacation['account_id']);
|
||||||
$icServer = $account->imapServer($_vacation['account_id']);
|
$icServer = $account->imapServer($_vacation['account_id']);
|
||||||
|
|
||||||
//error_log(__METHOD__.'() imap username='.$icServer->acc_imap_username);
|
//error_log(__METHOD__.'() imap username='.$icServer->acc_imap_username);
|
||||||
@ -1053,7 +1056,7 @@ class mail_sieve
|
|||||||
{
|
{
|
||||||
$newruletext .= ", ";
|
$newruletext .= ", ";
|
||||||
}
|
}
|
||||||
$btransform_ctype = emailadmin_script::$btransform_ctype_array[$rule['ctype']];
|
$btransform_ctype = Mail\Script::$btransform_ctype_array[$rule['ctype']];
|
||||||
$ctype_subtype = "";
|
$ctype_subtype = "";
|
||||||
if ($rule['field_ctype_val'])
|
if ($rule['field_ctype_val'])
|
||||||
{
|
{
|
||||||
@ -1061,7 +1064,7 @@ class mail_sieve
|
|||||||
}
|
}
|
||||||
$complete .= " body :content " . " \"" . $btransform_ctype . $ctype_subtype . $rule['field_ctype_val'] . "\"" . " :contains \"\"";
|
$complete .= " body :content " . " \"" . $btransform_ctype . $ctype_subtype . $rule['field_ctype_val'] . "\"" . " :contains \"\"";
|
||||||
$started = 1;
|
$started = 1;
|
||||||
//error_log(__CLASS__."::".__METHOD__.array2string(emailadmin_script::$btransform_ctype_array));
|
//error_log(__CLASS__."::".__METHOD__.array2string(Mail\Script::$btransform_ctype_array));
|
||||||
}
|
}
|
||||||
if (!$rule['unconditional'])
|
if (!$rule['unconditional'])
|
||||||
{
|
{
|
||||||
|
@ -10,12 +10,8 @@
|
|||||||
* @version $Id:$
|
* @version $Id:$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
/**
|
use EGroupware\Api\Etemplate\Widget\Tree;
|
||||||
* Define tree as class tree widget
|
|
||||||
*/
|
|
||||||
use \etemplate_widget_tree as tree;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mail tree worker class
|
* Mail tree worker class
|
||||||
@ -26,11 +22,11 @@ use \etemplate_widget_tree as tree;
|
|||||||
class mail_tree
|
class mail_tree
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* delimiter - used to separate profileID from folder-tree-structure
|
* delimiter - used to separate acc_id from mailbox / folder-tree-structure
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
static $delimiter = '::';
|
const DELIMITER = Mail::DELIMITER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Icons used for nodes different states
|
* Icons used for nodes different states
|
||||||
@ -47,12 +43,19 @@ class mail_tree
|
|||||||
'folderAccount' => "thunderbird",
|
'folderAccount' => "thunderbird",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instance of mail_ui class
|
||||||
|
*
|
||||||
|
* @var mail_ui
|
||||||
|
*/
|
||||||
|
var $ui;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mail tree constructor
|
* Mail tree constructor
|
||||||
*
|
*
|
||||||
* @param object $mail_ui
|
* @param mail_ui $mail_ui
|
||||||
*/
|
*/
|
||||||
function __construct($mail_ui)
|
function __construct(mail_ui $mail_ui)
|
||||||
{
|
{
|
||||||
$this->ui = $mail_ui;
|
$this->ui = $mail_ui;
|
||||||
|
|
||||||
@ -79,7 +82,7 @@ class mail_tree
|
|||||||
{
|
{
|
||||||
$baseNode = array('id' => $_profileID);
|
$baseNode = array('id' => $_profileID);
|
||||||
$leaf = array(
|
$leaf = array(
|
||||||
'id' => $_profileID.self::$delimiter.'INBOX',
|
'id' => $_profileID.self::DELIMITER.'INBOX',
|
||||||
'text' => $_err,
|
'text' => $_err,
|
||||||
'tooltip' => $_err,
|
'tooltip' => $_err,
|
||||||
'im0' => self::$leafImages["folderNoSelectClosed"],
|
'im0' => self::$leafImages["folderNoSelectClosed"],
|
||||||
@ -88,7 +91,7 @@ class mail_tree
|
|||||||
'path'=> $_path,
|
'path'=> $_path,
|
||||||
'parent' => $_parent
|
'parent' => $_parent
|
||||||
);
|
);
|
||||||
self::setOutStructure($leaf, $baseNode, self::$delimiter);
|
self::setOutStructure($leaf, $baseNode, self::DELIMITER);
|
||||||
|
|
||||||
return ($baseNode?$baseNode:array( // fallback not connected array
|
return ($baseNode?$baseNode:array( // fallback not connected array
|
||||||
'id'=>0,
|
'id'=>0,
|
||||||
@ -101,28 +104,6 @@ class mail_tree
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get folder data from path
|
|
||||||
*
|
|
||||||
* @param string $path a node path
|
|
||||||
* @return array returns an array of data extracted from given node path
|
|
||||||
*/
|
|
||||||
static function pathToFolderData ($_path, $_hDelimiter)
|
|
||||||
{
|
|
||||||
if (!strpos($_path, self::$delimiter)) $_path = self::$delimiter.$_path;
|
|
||||||
list(,$path) = explode(self::$delimiter, $_path);
|
|
||||||
$path_chain = $parts = explode($_hDelimiter, $path);
|
|
||||||
$name = array_pop($parts);
|
|
||||||
return array (
|
|
||||||
'name' => $name,
|
|
||||||
'mailbox' => $path,
|
|
||||||
'parent' => implode($_hDelimiter, $parts),
|
|
||||||
'text' => $name,
|
|
||||||
'tooltip' => $name,
|
|
||||||
'path' => $path_chain
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a given node has children attribute set
|
* Check if a given node has children attribute set
|
||||||
*
|
*
|
||||||
@ -146,7 +127,7 @@ class mail_tree
|
|||||||
*/
|
*/
|
||||||
private static function isAccountNode ($_node)
|
private static function isAccountNode ($_node)
|
||||||
{
|
{
|
||||||
list(,$leaf) = explode(self::$delimiter, $_node);
|
list(,$leaf) = explode(self::DELIMITER, $_node);
|
||||||
if ($leaf || $_node == null) return false;
|
if ($leaf || $_node == null) return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -185,10 +166,10 @@ class mail_tree
|
|||||||
function getTree ($_parent = null, $_profileID = '', $_openTopLevel = 1, $_noCheckboxNS = false, $_subscribedOnly= false, $_allInOneGo = false, $_checkSubscribed = true)
|
function getTree ($_parent = null, $_profileID = '', $_openTopLevel = 1, $_noCheckboxNS = false, $_subscribedOnly= false, $_allInOneGo = false, $_checkSubscribed = true)
|
||||||
{
|
{
|
||||||
//Init mail folders
|
//Init mail folders
|
||||||
$tree = array(tree::ID=> $_parent?$_parent:0,tree::CHILDREN => array());
|
$tree = array(Tree::ID=> $_parent?$_parent:0,Tree::CHILDREN => array());
|
||||||
$hDelimiter = $this->ui->mail_bo->getHierarchyDelimiter();
|
$hDelimiter = $this->ui->mail_bo->getHierarchyDelimiter();
|
||||||
|
|
||||||
if ($_parent) list($_profileID) = explode(self::$delimiter, $_parent);
|
if ($_parent) list($_profileID) = explode(self::DELIMITER, $_parent);
|
||||||
|
|
||||||
if (is_numeric($_profileID) && $_profileID != $this->ui->mail_bo->profileID)
|
if (is_numeric($_profileID) && $_profileID != $this->ui->mail_bo->profileID)
|
||||||
{
|
{
|
||||||
@ -213,28 +194,28 @@ class mail_tree
|
|||||||
);
|
);
|
||||||
if ($_parent && !self::isAccountNode($_parent)) // Single node loader
|
if ($_parent && !self::isAccountNode($_parent)) // Single node loader
|
||||||
{
|
{
|
||||||
$nodeInfo = self::pathToFolderData($_parent, $hDelimiter);
|
$nodeInfo = Mail::pathToFolderData($_parent, $hDelimiter);
|
||||||
$folders = $this->ui->mail_bo->getFolderArrays($nodeInfo['mailbox'],false,$_allInOneGo?0:2, $_subscribedOnly);
|
$folders = $this->ui->mail_bo->getFolderArrays($nodeInfo['mailbox'],false,$_allInOneGo?0:2, $_subscribedOnly);
|
||||||
|
|
||||||
$childrenNode = array();
|
$childrenNode = array();
|
||||||
foreach ($folders as &$node)
|
foreach ($folders as &$node)
|
||||||
{
|
{
|
||||||
$nodeId = $_profileID.self::$delimiter.$node['MAILBOX'];
|
$nodeId = $_profileID.self::DELIMITER.$node['MAILBOX'];
|
||||||
$nodeData = self::pathToFolderData($nodeId, $node['delimiter']);
|
$nodeData = Mail::pathToFolderData($nodeId, $node['delimiter']);
|
||||||
$childrenNode[] = array(
|
$childrenNode[] = array(
|
||||||
tree::ID=> $nodeId,
|
Tree::ID=> $nodeId,
|
||||||
tree::AUTOLOAD_CHILDREN => $_allInOneGo?false:self::nodeHasChildren($node),
|
Tree::AUTOLOAD_CHILDREN => $_allInOneGo?false:self::nodeHasChildren($node),
|
||||||
tree::CHILDREN =>array(),
|
Tree::CHILDREN =>array(),
|
||||||
tree::LABEL => $nodeData['text'],
|
Tree::LABEL => $nodeData['text'],
|
||||||
tree::TOOLTIP => $nodeData['tooltip'],
|
Tree::TOOLTIP => $nodeData['tooltip'],
|
||||||
tree::IMAGE_LEAF => self::$leafImages['folderLeaf'],
|
Tree::IMAGE_LEAF => self::$leafImages['folderLeaf'],
|
||||||
tree::IMAGE_FOLDER_OPEN => self::$leafImages['folderOpen'],
|
Tree::IMAGE_FOLDER_OPEN => self::$leafImages['folderOpen'],
|
||||||
tree::IMAGE_FOLDER_CLOSED => self::$leafImages['folderClosed'],
|
Tree::IMAGE_FOLDER_CLOSED => self::$leafImages['folderClosed'],
|
||||||
tree::CHECKED => $_checkSubscribed?$node['SUBSCRIBED']:false,
|
Tree::CHECKED => $_checkSubscribed?$node['SUBSCRIBED']:false,
|
||||||
'parent' => $_parent
|
'parent' => $_parent
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$tree[tree::CHILDREN] = $childrenNode;
|
$tree[Tree::CHILDREN] = $childrenNode;
|
||||||
}
|
}
|
||||||
else //Top Level Nodes loader
|
else //Top Level Nodes loader
|
||||||
{
|
{
|
||||||
@ -259,15 +240,15 @@ class mail_tree
|
|||||||
array_unshift($path, $_profileID);
|
array_unshift($path, $_profileID);
|
||||||
|
|
||||||
$data = array(
|
$data = array(
|
||||||
tree::ID=>$_profileID.self::$delimiter.$folder['MAILBOX'],
|
Tree::ID=>$_profileID.self::DELIMITER.$folder['MAILBOX'],
|
||||||
tree::AUTOLOAD_CHILDREN => $_allInOneGo?false:self::nodeHasChildren($folder),
|
Tree::AUTOLOAD_CHILDREN => $_allInOneGo?false:self::nodeHasChildren($folder),
|
||||||
tree::CHILDREN =>array(),
|
Tree::CHILDREN =>array(),
|
||||||
tree::LABEL =>lang($folder['MAILBOX']),
|
Tree::LABEL =>lang($folder['MAILBOX']),
|
||||||
tree::OPEN => self::getNodeLevel($folder['MAILBOX'], $folder['delimiter']) <= $_openTopLevel?1:0,
|
Tree::OPEN => self::getNodeLevel($folder['MAILBOX'], $folder['delimiter']) <= $_openTopLevel?1:0,
|
||||||
tree::TOOLTIP => lang($folder['MAILBOX']),
|
Tree::TOOLTIP => lang($folder['MAILBOX']),
|
||||||
tree::CHECKED => $_checkSubscribed?$folder['SUBSCRIBED']:false,
|
Tree::CHECKED => $_checkSubscribed?$folder['SUBSCRIBED']:false,
|
||||||
tree::NOCHECKBOX => 0,
|
Tree::NOCHECKBOX => 0,
|
||||||
'parent' => $parent?$_profileID.self::$delimiter.implode($folder['delimiter'], $parent):$_profileID,
|
'parent' => $parent?$_profileID.self::DELIMITER.implode($folder['delimiter'], $parent):$_profileID,
|
||||||
'path' => $path,
|
'path' => $path,
|
||||||
'folderarray' => $folder
|
'folderarray' => $folder
|
||||||
);
|
);
|
||||||
@ -275,12 +256,12 @@ class mail_tree
|
|||||||
if ($folder['MAILBOX'] === "INBOX")
|
if ($folder['MAILBOX'] === "INBOX")
|
||||||
{
|
{
|
||||||
$data['data'] = array('acl' => $this->ui->mail_bo->icServer->queryCapability('ACL'));
|
$data['data'] = array('acl' => $this->ui->mail_bo->icServer->queryCapability('ACL'));
|
||||||
$data[tree::NOCHECKBOX] = $_noCheckboxNS;
|
$data[Tree::NOCHECKBOX] = $_noCheckboxNS;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Do not open Initially other folders but INBOX
|
//Do not open Initially other folders but INBOX
|
||||||
$data[tree::OPEN] = 0;
|
$data[Tree::OPEN] = 0;
|
||||||
}
|
}
|
||||||
self::setOutStructure($data, $tree, $folder['delimiter'], true, $this->ui->mail_bo->_getNameSpaces(), $definedFolders);
|
self::setOutStructure($data, $tree, $folder['delimiter'], true, $this->ui->mail_bo->_getNameSpaces(), $definedFolders);
|
||||||
}
|
}
|
||||||
@ -288,16 +269,16 @@ class mail_tree
|
|||||||
if (self::isAccountNode($_parent))
|
if (self::isAccountNode($_parent))
|
||||||
{
|
{
|
||||||
$tree = array(
|
$tree = array(
|
||||||
tree::ID => (string)$_parent,
|
Tree::ID => (string)$_parent,
|
||||||
tree::CHILDREN => $tree[tree::CHILDREN][0][tree::CHILDREN],
|
Tree::CHILDREN => $tree[Tree::CHILDREN][0][Tree::CHILDREN],
|
||||||
tree::LABEL => $tree[tree::CHILDREN][0][tree::LABEL],
|
Tree::LABEL => $tree[Tree::CHILDREN][0][Tree::LABEL],
|
||||||
tree::IMAGE_LEAF => $tree[tree::CHILDREN][0][tree::IMAGE_LEAF],
|
Tree::IMAGE_LEAF => $tree[Tree::CHILDREN][0][Tree::IMAGE_LEAF],
|
||||||
tree::IMAGE_FOLDER_OPEN => $tree[tree::CHILDREN][0][tree::IMAGE_FOLDER_OPEN],
|
Tree::IMAGE_FOLDER_OPEN => $tree[Tree::CHILDREN][0][Tree::IMAGE_FOLDER_OPEN],
|
||||||
tree::IMAGE_FOLDER_CLOSED => $tree[tree::CHILDREN][0][tree::IMAGE_FOLDER_CLOSED],
|
Tree::IMAGE_FOLDER_CLOSED => $tree[Tree::CHILDREN][0][Tree::IMAGE_FOLDER_CLOSED],
|
||||||
tree::OPEN => 1,
|
Tree::OPEN => 1,
|
||||||
tree::TOOLTIP => $tree[tree::CHILDREN][0][tree::TOOLTIP],
|
Tree::TOOLTIP => $tree[Tree::CHILDREN][0][Tree::TOOLTIP],
|
||||||
tree::AUTOLOAD_CHILDREN => 1,
|
Tree::AUTOLOAD_CHILDREN => 1,
|
||||||
'data' => $tree[tree::CHILDREN][0]['data']
|
'data' => $tree[Tree::CHILDREN][0]['data']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -335,13 +316,13 @@ class mail_tree
|
|||||||
if (count($parents)>1)
|
if (count($parents)>1)
|
||||||
{
|
{
|
||||||
$helper = array_slice($parents,1,null,true);
|
$helper = array_slice($parents,1,null,true);
|
||||||
$parent = $parents[0].self::$delimiter.implode($del, $helper);
|
$parent = $parents[0].self::DELIMITER.implode($del, $helper);
|
||||||
if ($parent) $parent .= $del;
|
if ($parent) $parent .= $del;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$parent = implode(self::$delimiter, $parents);
|
$parent = implode(self::DELIMITER, $parents);
|
||||||
if ($parent) $parent .= self::$delimiter;
|
if ($parent) $parent .= self::DELIMITER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_array($insert) || !isset($insert['item']))
|
if (!is_array($insert) || !isset($insert['item']))
|
||||||
@ -357,9 +338,9 @@ class mail_tree
|
|||||||
{
|
{
|
||||||
// if (appropriately padded) namespace prefix of (others or shared) is the leading part of parent
|
// if (appropriately padded) namespace prefix of (others or shared) is the leading part of parent
|
||||||
// we want to create the node in question as we meet the above considerations
|
// we want to create the node in question as we meet the above considerations
|
||||||
if ($nsp['type']!='personal' && $nsp['prefix_present'] && stripos($parent,$data['path'][0].self::$delimiter.$nsp['prefix'])===0)
|
if ($nsp['type']!='personal' && $nsp['prefix_present'] && stripos($parent,$data['path'][0].self::DELIMITER.$nsp['prefix'])===0)
|
||||||
{
|
{
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' about to create:'.$parent.' in '.$data['path'][0].self::$delimiter.$nsp['prefix']);
|
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' about to create:'.$parent.' in '.$data['path'][0].self::DELIMITER.$nsp['prefix']);
|
||||||
$break=false;
|
$break=false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -406,36 +387,36 @@ class mail_tree
|
|||||||
|
|
||||||
if ($data['folderarray']['MAILBOX'] === "INBOX")
|
if ($data['folderarray']['MAILBOX'] === "INBOX")
|
||||||
{
|
{
|
||||||
$data[tree::IMAGE_LEAF] = self::$leafImages['folderHome'];
|
$data[Tree::IMAGE_LEAF] = self::$leafImages['folderHome'];
|
||||||
$data[tree::IMAGE_FOLDER_OPEN] = self::$leafImages['folderHome'];
|
$data[Tree::IMAGE_FOLDER_OPEN] = self::$leafImages['folderHome'];
|
||||||
$data[tree::IMAGE_FOLDER_CLOSED] = self::$leafImages['folderHome'];
|
$data[Tree::IMAGE_FOLDER_CLOSED] = self::$leafImages['folderHome'];
|
||||||
$data[tree::LABEL] = lang($folderName);
|
$data[Tree::LABEL] = lang($folderName);
|
||||||
$data[tree::TOOLTIP] = lang($folderName);
|
$data[Tree::TOOLTIP] = lang($folderName);
|
||||||
}
|
}
|
||||||
// User defined folders may get different icons
|
// User defined folders may get different icons
|
||||||
// plus they need to be translated too
|
// plus they need to be translated too
|
||||||
elseif (($key = array_search($data['folderarray']['MAILBOX'], $definedFolders, true)) !== false)
|
elseif (($key = array_search($data['folderarray']['MAILBOX'], $definedFolders, true)) !== false)
|
||||||
{
|
{
|
||||||
$data[tree::LABEL] = lang($key);
|
$data[Tree::LABEL] = lang($key);
|
||||||
$data[tree::TOOLTIP] = lang($key);
|
$data[Tree::TOOLTIP] = lang($key);
|
||||||
//User defined folders icons
|
//User defined folders icons
|
||||||
$data[tree::IMAGE_LEAF] =
|
$data[Tree::IMAGE_LEAF] =
|
||||||
$data[tree::IMAGE_FOLDER_OPEN] =
|
$data[Tree::IMAGE_FOLDER_OPEN] =
|
||||||
$data [tree::IMAGE_FOLDER_CLOSED] = "MailFolder".$key.".png";
|
$data [Tree::IMAGE_FOLDER_CLOSED] = "MailFolder".$key.".png";
|
||||||
}
|
}
|
||||||
elseif(stripos(array2string($data['folderarray']['attributes']),'\noselect')!== false)
|
elseif(stripos(array2string($data['folderarray']['attributes']),'\noselect')!== false)
|
||||||
{
|
{
|
||||||
$data[tree::IMAGE_LEAF] = self::$leafImages['folderNoSelectClosed'];
|
$data[Tree::IMAGE_LEAF] = self::$leafImages['folderNoSelectClosed'];
|
||||||
$data[tree::IMAGE_FOLDER_OPEN] = self::$leafImages['folderNoSelectOpen'];
|
$data[Tree::IMAGE_FOLDER_OPEN] = self::$leafImages['folderNoSelectOpen'];
|
||||||
$data[tree::IMAGE_FOLDER_CLOSED] = self::$leafImages['folderNoSelectClosed'];
|
$data[Tree::IMAGE_FOLDER_CLOSED] = self::$leafImages['folderNoSelectClosed'];
|
||||||
}
|
}
|
||||||
elseif ($data['parent'])
|
elseif ($data['parent'])
|
||||||
{
|
{
|
||||||
$data[tree::LABEL] = $folderName;
|
$data[Tree::LABEL] = $folderName;
|
||||||
$data[tree::TOOLTIP] = $folderName;
|
$data[Tree::TOOLTIP] = $folderName;
|
||||||
$data[tree::IMAGE_LEAF] = self::$leafImages['folderLeaf'];
|
$data[Tree::IMAGE_LEAF] = self::$leafImages['folderLeaf'];
|
||||||
$data[tree::IMAGE_FOLDER_OPEN] = self::$leafImages['folderOpen'];
|
$data[Tree::IMAGE_FOLDER_OPEN] = self::$leafImages['folderOpen'];
|
||||||
$data[tree::IMAGE_FOLDER_CLOSED] = self::$leafImages['folderClosed'];
|
$data[Tree::IMAGE_FOLDER_CLOSED] = self::$leafImages['folderClosed'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Contains unseen mails for the folder
|
// Contains unseen mails for the folder
|
||||||
@ -445,7 +426,7 @@ class mail_tree
|
|||||||
// accordingly to indicate useen mails
|
// accordingly to indicate useen mails
|
||||||
if ($unseen > 0)
|
if ($unseen > 0)
|
||||||
{
|
{
|
||||||
$data[tree::LABEL] = $data[tree::LABEL].'('.$unseen.')';
|
$data[Tree::LABEL] = $data[Tree::LABEL].'('.$unseen.')';
|
||||||
$data['style'] = 'font-weight: bold';
|
$data['style'] = 'font-weight: bold';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -467,35 +448,35 @@ class mail_tree
|
|||||||
*/
|
*/
|
||||||
static function getAccountsRootNode($_profileID = null, $_noCheckbox = false, $_openTopLevel = 0 )
|
static function getAccountsRootNode($_profileID = null, $_noCheckbox = false, $_openTopLevel = 0 )
|
||||||
{
|
{
|
||||||
$roots = array(tree::ID => 0, tree::CHILDREN => array());
|
$roots = array(Tree::ID => 0, Tree::CHILDREN => array());
|
||||||
|
|
||||||
foreach(emailadmin_account::search(true, false) as $acc_id => $accObj)
|
foreach(Mail\Account::search(true, false) as $acc_id => $accObj)
|
||||||
{
|
{
|
||||||
if (!$accObj->is_imap()|| $_profileID && $acc_id != $_profileID) continue;
|
if (!$accObj->is_imap()|| $_profileID && $acc_id != $_profileID) continue;
|
||||||
$identity = emailadmin_account::identity_name($accObj,true,$GLOBALS['egw_info']['user']['acount_id']);
|
$identity = Mail\Account::identity_name($accObj,true,$GLOBALS['egw_info']['user']['acount_id']);
|
||||||
// Open top level folders for active account
|
// Open top level folders for active account
|
||||||
$openActiveAccount = $GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'] == $acc_id?1:0;
|
$openActiveAccount = $GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'] == $acc_id?1:0;
|
||||||
|
|
||||||
$baseNode = array(
|
$baseNode = array(
|
||||||
tree::ID=> (string)$acc_id,
|
Tree::ID=> (string)$acc_id,
|
||||||
tree::LABEL => str_replace(array('<','>'),array('[',']'),$identity),
|
Tree::LABEL => str_replace(array('<','>'),array('[',']'),$identity),
|
||||||
tree::TOOLTIP => '('.$acc_id.') '.htmlspecialchars_decode($identity),
|
Tree::TOOLTIP => '('.$acc_id.') '.htmlspecialchars_decode($identity),
|
||||||
tree::IMAGE_LEAF => self::$leafImages['folderAccount'],
|
Tree::IMAGE_LEAF => self::$leafImages['folderAccount'],
|
||||||
tree::IMAGE_FOLDER_OPEN => self::$leafImages['folderAccount'],
|
Tree::IMAGE_FOLDER_OPEN => self::$leafImages['folderAccount'],
|
||||||
tree::IMAGE_FOLDER_CLOSED => self::$leafImages['folderAccount'],
|
Tree::IMAGE_FOLDER_CLOSED => self::$leafImages['folderAccount'],
|
||||||
'path'=> array($acc_id),
|
'path'=> array($acc_id),
|
||||||
tree::CHILDREN => array(), // dynamic loading on unfold
|
Tree::CHILDREN => array(), // dynamic loading on unfold
|
||||||
tree::AUTOLOAD_CHILDREN => true,
|
Tree::AUTOLOAD_CHILDREN => true,
|
||||||
'parent' => '',
|
'parent' => '',
|
||||||
tree::OPEN => $_openTopLevel?$_openTopLevel:$openActiveAccount,
|
Tree::OPEN => $_openTopLevel?$_openTopLevel:$openActiveAccount,
|
||||||
// mark on account if Sieve is enabled
|
// mark on account if Sieve is enabled
|
||||||
'data' => array(
|
'data' => array(
|
||||||
'sieve' => $accObj->imapServer()->acc_sieve_enabled,
|
'sieve' => $accObj->imapServer()->acc_sieve_enabled,
|
||||||
'spamfolder'=> $accObj->imapServer()->acc_folder_junk?true:false
|
'spamfolder'=> $accObj->imapServer()->acc_folder_junk?true:false
|
||||||
),
|
),
|
||||||
tree::NOCHECKBOX => $_noCheckbox
|
Tree::NOCHECKBOX => $_noCheckbox
|
||||||
);
|
);
|
||||||
self::setOutStructure($baseNode, $roots,self::$delimiter);
|
self::setOutStructure($baseNode, $roots,self::DELIMITER);
|
||||||
}
|
}
|
||||||
return $roots;
|
return $roots;
|
||||||
}
|
}
|
||||||
@ -518,9 +499,9 @@ class mail_tree
|
|||||||
{
|
{
|
||||||
$tree = $this->getTree($_parent, '', $_openTopLevel, false, $_subscribedOnly, $_allInOneGo);
|
$tree = $this->getTree($_parent, '', $_openTopLevel, false, $_subscribedOnly, $_allInOneGo);
|
||||||
$branches = $this->getTree($_profileID, $_profileID,1,false,$_subscribedOnly,$_allInOneGo);
|
$branches = $this->getTree($_profileID, $_profileID,1,false,$_subscribedOnly,$_allInOneGo);
|
||||||
foreach ($tree[tree::CHILDREN] as &$account)
|
foreach ($tree[Tree::CHILDREN] as &$account)
|
||||||
{
|
{
|
||||||
if ($account[tree::ID] == $_profileID)
|
if ($account[Tree::ID] == $_profileID)
|
||||||
{
|
{
|
||||||
$account = $branches;
|
$account = $branches;
|
||||||
}
|
}
|
||||||
|
@ -5,12 +5,13 @@
|
|||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @package mail
|
* @package mail
|
||||||
* @author Stylite AG [info@stylite.de]
|
* @author Stylite AG [info@stylite.de]
|
||||||
* @copyright (c) 2013-2014 by Stylite AG <info-AT-stylite.de>
|
* @copyright (c) 2013-2016 by Stylite AG <info-AT-stylite.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use EGroupware\Api;
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mail User Interface
|
* Mail User Interface
|
||||||
@ -73,9 +74,9 @@ class mail_ui
|
|||||||
static $nm_index = 'nm';
|
static $nm_index = 'nm';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* instance of mail_bo
|
* instance of Mail
|
||||||
*
|
*
|
||||||
* @var mail_bo
|
* @var Mail
|
||||||
*/
|
*/
|
||||||
var $mail_bo;
|
var $mail_bo;
|
||||||
|
|
||||||
@ -122,7 +123,7 @@ class mail_ui
|
|||||||
$this->mail_tree = new mail_tree($this);
|
$this->mail_tree = new mail_tree($this);
|
||||||
if (!$run_constructor) return;
|
if (!$run_constructor) return;
|
||||||
|
|
||||||
if (mail_bo::$debugTimes) $starttime = microtime (true);
|
if (Mail::$debugTimes) $starttime = microtime (true);
|
||||||
// no autohide of the sidebox, as we use it for folderlist now.
|
// no autohide of the sidebox, as we use it for folderlist now.
|
||||||
unset($GLOBALS['egw_info']['user']['preferences']['common']['auto_hide_sidebox']);
|
unset($GLOBALS['egw_info']['user']['preferences']['common']['auto_hide_sidebox']);
|
||||||
|
|
||||||
@ -133,13 +134,13 @@ class mail_ui
|
|||||||
if ($_GET["resetConnection"])
|
if ($_GET["resetConnection"])
|
||||||
{
|
{
|
||||||
unset($_GET["resetConnection"]);
|
unset($_GET["resetConnection"]);
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' Connection Reset triggered: for Profile with ID:'.self::$icServerID);
|
if (Mail::$debug) error_log(__METHOD__.__LINE__.' Connection Reset triggered: for Profile with ID:'.self::$icServerID);
|
||||||
emailadmin_imapbase::unsetCachedObjects(self::$icServerID);
|
Mail::unsetCachedObjects(self::$icServerID);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->mail_bo = mail_bo::getInstance(true,self::$icServerID, true, false, true);
|
$this->mail_bo = Mail::getInstance(true,self::$icServerID, true, false, true);
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' Fetched IC Server:'.self::$icServerID.'/'.$this->mail_bo->profileID.':'.function_backtrace());
|
if (Mail::$debug) error_log(__METHOD__.__LINE__.' Fetched IC Server:'.self::$icServerID.'/'.$this->mail_bo->profileID.':'.function_backtrace());
|
||||||
//error_log(__METHOD__.__LINE__.array2string($this->mail_bo->icServer));
|
//error_log(__METHOD__.__LINE__.array2string($this->mail_bo->icServer));
|
||||||
|
|
||||||
// RegEx to minimize extra openConnection
|
// RegEx to minimize extra openConnection
|
||||||
@ -156,7 +157,7 @@ class mail_ui
|
|||||||
// redirect to mail wizard to handle it (redirect works for ajax too)
|
// redirect to mail wizard to handle it (redirect works for ajax too)
|
||||||
self::callWizard($e->getMessage(),true,'error');
|
self::callWizard($e->getMessage(),true,'error');
|
||||||
}
|
}
|
||||||
if (mail_bo::$debugTimes) mail_bo::logRunTimes($starttime,null,'',__METHOD__.__LINE__);
|
if (Mail::$debugTimes) Mail::logRunTimes($starttime,null,'',__METHOD__.__LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -215,16 +216,16 @@ class mail_ui
|
|||||||
*/
|
*/
|
||||||
function changeProfile($_icServerID,$unsetCache=false)
|
function changeProfile($_icServerID,$unsetCache=false)
|
||||||
{
|
{
|
||||||
if (mail_bo::$debugTimes) $starttime = microtime (true);
|
if (Mail::$debugTimes) $starttime = microtime (true);
|
||||||
if (self::$icServerID != $_icServerID)
|
if (self::$icServerID != $_icServerID)
|
||||||
{
|
{
|
||||||
self::$icServerID = $_icServerID;
|
self::$icServerID = $_icServerID;
|
||||||
}
|
}
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.'->'.self::$icServerID.'<->'.$_icServerID);
|
if (Mail::$debug) error_log(__METHOD__.__LINE__.'->'.self::$icServerID.'<->'.$_icServerID);
|
||||||
|
|
||||||
if ($unsetCache) emailadmin_imapbase::unsetCachedObjects(self::$icServerID);
|
if ($unsetCache) Mail::unsetCachedObjects(self::$icServerID);
|
||||||
$this->mail_bo = mail_bo::getInstance(false,self::$icServerID,true, false, true);
|
$this->Mail = Mail::getInstance(false,self::$icServerID,true, false, true);
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' Fetched IC Server:'.self::$icServerID.'/'.$this->mail_bo->profileID.':'.function_backtrace());
|
if (Mail::$debug) error_log(__METHOD__.__LINE__.' Fetched IC Server:'.self::$icServerID.'/'.$this->mail_bo->profileID.':'.function_backtrace());
|
||||||
// no icServer Object: something failed big time
|
// no icServer Object: something failed big time
|
||||||
if (!isset($this->mail_bo->icServer) || $this->mail_bo->icServer->ImapServerId<>$_icServerID)
|
if (!isset($this->mail_bo->icServer) || $this->mail_bo->icServer->ImapServerId<>$_icServerID)
|
||||||
{
|
{
|
||||||
@ -236,12 +237,12 @@ class mail_ui
|
|||||||
$oldicServerID =& egw_cache::getSession('mail','activeProfileID');
|
$oldicServerID =& egw_cache::getSession('mail','activeProfileID');
|
||||||
if ($oldicServerID <> self::$icServerID) $this->mail_bo->openConnection(self::$icServerID);
|
if ($oldicServerID <> self::$icServerID) $this->mail_bo->openConnection(self::$icServerID);
|
||||||
$oldicServerID = self::$icServerID;
|
$oldicServerID = self::$icServerID;
|
||||||
if (!emailadmin_imapbase::storeActiveProfileIDToPref($this->mail_bo->icServer, self::$icServerID, true ))
|
if (!Mail::storeActiveProfileIDToPref($this->mail_bo->icServer, self::$icServerID, true ))
|
||||||
{
|
{
|
||||||
throw new egw_exception(__METHOD__." failed to change Profile to $_icServerID");
|
throw new egw_exception(__METHOD__." failed to change Profile to $_icServerID");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mail_bo::$debugTimes) mail_bo::logRunTimes($starttime,null,'',__METHOD__.__LINE__);
|
if (Mail::$debugTimes) Mail::logRunTimes($starttime,null,'',__METHOD__.__LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -407,7 +408,7 @@ class mail_ui
|
|||||||
//error_log(__METHOD__.__LINE__.array2string($content));
|
//error_log(__METHOD__.__LINE__.array2string($content));
|
||||||
try {
|
try {
|
||||||
//error_log(__METHOD__.__LINE__.function_backtrace());
|
//error_log(__METHOD__.__LINE__.function_backtrace());
|
||||||
if (mail_bo::$debugTimes) $starttime = microtime (true);
|
if (Mail::$debugTimes) $starttime = microtime (true);
|
||||||
$this->mail_bo->restoreSessionData();
|
$this->mail_bo->restoreSessionData();
|
||||||
$sessionFolder = $this->mail_bo->sessionData['mailbox'];
|
$sessionFolder = $this->mail_bo->sessionData['mailbox'];
|
||||||
if ($this->mail_bo->folderExists($sessionFolder))
|
if ($this->mail_bo->folderExists($sessionFolder))
|
||||||
@ -521,12 +522,12 @@ class mail_ui
|
|||||||
|
|
||||||
$content[self::$nm_index]['foldertree'] = $content[self::$nm_index]['selectedFolder'];
|
$content[self::$nm_index]['foldertree'] = $content[self::$nm_index]['selectedFolder'];
|
||||||
|
|
||||||
if (is_null(emailadmin_imapbase::$supportsORinQuery) || !isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]))
|
if (is_null(Mail::$supportsORinQuery) || !isset(Mail::$supportsORinQuery[$this->mail_bo->profileID]))
|
||||||
{
|
{
|
||||||
emailadmin_imapbase::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE, 'email', 'supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
Mail::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE, 'email', 'supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
||||||
if (!isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID])) emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
if (!isset(Mail::$supportsORinQuery[$this->mail_bo->profileID])) Mail::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
||||||
}
|
}
|
||||||
if (!emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID])
|
if (!Mail::$supportsORinQuery[$this->mail_bo->profileID])
|
||||||
{
|
{
|
||||||
unset($this->searchTypes['quick']);
|
unset($this->searchTypes['quick']);
|
||||||
unset($this->searchTypes['quickwithcc']);
|
unset($this->searchTypes['quickwithcc']);
|
||||||
@ -740,10 +741,10 @@ class mail_ui
|
|||||||
//we use the category "filter" option as specifier where we want to search (quick, subject, from, to, etc. ....)
|
//we use the category "filter" option as specifier where we want to search (quick, subject, from, to, etc. ....)
|
||||||
if (empty($content[self::$nm_index]['cat_id']) || empty($content[self::$nm_index]['search']))
|
if (empty($content[self::$nm_index]['cat_id']) || empty($content[self::$nm_index]['search']))
|
||||||
{
|
{
|
||||||
$content[self::$nm_index]['cat_id']=($content[self::$nm_index]['cat_id']?(!emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]&&($content[self::$nm_index]['cat_id']=='quick'||$content[self::$nm_index]['cat_id']=='quickwithcc')?'subject':$content[self::$nm_index]['cat_id']):(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]?'quick':'subject'));
|
$content[self::$nm_index]['cat_id']=($content[self::$nm_index]['cat_id']?(!Mail::$supportsORinQuery[$this->mail_bo->profileID]&&($content[self::$nm_index]['cat_id']=='quick'||$content[self::$nm_index]['cat_id']=='quickwithcc')?'subject':$content[self::$nm_index]['cat_id']):(Mail::$supportsORinQuery[$this->mail_bo->profileID]?'quick':'subject'));
|
||||||
}
|
}
|
||||||
$readonlys = $preserv = array();
|
$readonlys = $preserv = array();
|
||||||
if (mail_bo::$debugTimes) mail_bo::logRunTimes($starttime,null,'',__METHOD__.__LINE__);
|
if (Mail::$debugTimes) Mail::logRunTimes($starttime,null,'',__METHOD__.__LINE__);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
@ -764,7 +765,7 @@ class mail_ui
|
|||||||
*/
|
*/
|
||||||
public function ajax_foldersubscription($_acc_id,$_folderName, $_status)
|
public function ajax_foldersubscription($_acc_id,$_folderName, $_status)
|
||||||
{
|
{
|
||||||
//Change the mail_bo object to related profileId
|
//Change the Mail object to related profileId
|
||||||
$this->changeProfile($_acc_id);
|
$this->changeProfile($_acc_id);
|
||||||
|
|
||||||
if($this->mail_bo->icServer->subscribeMailbox($_folderName, $_status))
|
if($this->mail_bo->icServer->subscribeMailbox($_folderName, $_status))
|
||||||
@ -859,7 +860,7 @@ class mail_ui
|
|||||||
//error_log(__METHOD__.__LINE__.' ProfileId:'.$this->mail_bo->profileID." StoredFolders->(".count($lastFoldersUsedForMoveCont[$this->mail_bo->profileID]).") ".array2string($lastFoldersUsedForMoveCont[$this->mail_bo->profileID]));
|
//error_log(__METHOD__.__LINE__.' ProfileId:'.$this->mail_bo->profileID." StoredFolders->(".count($lastFoldersUsedForMoveCont[$this->mail_bo->profileID]).") ".array2string($lastFoldersUsedForMoveCont[$this->mail_bo->profileID]));
|
||||||
if (is_null($accArray))
|
if (is_null($accArray))
|
||||||
{
|
{
|
||||||
foreach(emailadmin_account::search($only_current_user=true, false) as $acc_id => $accountObj)
|
foreach(Mail\Account::search($only_current_user=true, false) as $acc_id => $accountObj)
|
||||||
{
|
{
|
||||||
//error_log(__METHOD__.__LINE__.array2string($accountObj));
|
//error_log(__METHOD__.__LINE__.array2string($accountObj));
|
||||||
if (!$accountObj->is_imap())
|
if (!$accountObj->is_imap())
|
||||||
@ -867,7 +868,7 @@ class mail_ui
|
|||||||
// not to be used for IMAP Foldertree, as there is no Imap host
|
// not to be used for IMAP Foldertree, as there is no Imap host
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$identity_name = emailadmin_account::identity_name($accountObj,true,$GLOBALS['egw_info']['user']['acount_id']);
|
$identity_name = Mail\Account::identity_name($accountObj,true,$GLOBALS['egw_info']['user']['acount_id']);
|
||||||
$accArray[$acc_id] = str_replace(array('<','>'),array('[',']'),$identity_name);// as angle brackets are quoted, display in Javascript messages when used is ugly, so use square brackets instead
|
$accArray[$acc_id] = str_replace(array('<','>'),array('[',']'),$identity_name);// as angle brackets are quoted, display in Javascript messages when used is ugly, so use square brackets instead
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1284,8 +1285,8 @@ class mail_ui
|
|||||||
}
|
}
|
||||||
|
|
||||||
//error_log(__METHOD__.__LINE__.' SelectedFolder:'.$query['selectedFolder'].' Start:'.$query['start'].' NumRows:'.$query['num_rows'].array2string($query['order']).'->'.array2string($query['sort']));
|
//error_log(__METHOD__.__LINE__.' SelectedFolder:'.$query['selectedFolder'].' Start:'.$query['start'].' NumRows:'.$query['num_rows'].array2string($query['order']).'->'.array2string($query['sort']));
|
||||||
//mail_bo::$debugTimes=true;
|
//Mail::$debugTimes=true;
|
||||||
if (mail_bo::$debugTimes) $starttime = microtime(true);
|
if (Mail::$debugTimes) $starttime = microtime(true);
|
||||||
//$query['search'] is the phrase in the searchbox
|
//$query['search'] is the phrase in the searchbox
|
||||||
|
|
||||||
$mail_ui->mail_bo->restoreSessionData();
|
$mail_ui->mail_bo->restoreSessionData();
|
||||||
@ -1323,19 +1324,19 @@ class mail_ui
|
|||||||
$sort = ($query['order']=='address'?($toSchema?'toaddress':'fromaddress'):$query['order']);
|
$sort = ($query['order']=='address'?($toSchema?'toaddress':'fromaddress'):$query['order']);
|
||||||
if (!empty($query['search']))
|
if (!empty($query['search']))
|
||||||
{
|
{
|
||||||
if (is_null(emailadmin_imapbase::$supportsORinQuery) || !isset(emailadmin_imapbase::$supportsORinQuery[$mail_ui->mail_bo->profileID]))
|
if (is_null(Mail::$supportsORinQuery) || !isset(Mail::$supportsORinQuery[$mail_ui->mail_bo->profileID]))
|
||||||
{
|
{
|
||||||
emailadmin_imapbase::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
Mail::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
||||||
if (!isset(emailadmin_imapbase::$supportsORinQuery[$mail_ui->mail_bo->profileID]))
|
if (!isset(Mail::$supportsORinQuery[$mail_ui->mail_bo->profileID]))
|
||||||
{
|
{
|
||||||
emailadmin_imapbase::$supportsORinQuery[$mail_ui->mail_bo->profileID]=true;
|
Mail::$supportsORinQuery[$mail_ui->mail_bo->profileID]=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//$cutoffdate = egw_time::to('now','ts')-(3600*24*3);//SINCE, enddate
|
//$cutoffdate = egw_time::to('now','ts')-(3600*24*3);//SINCE, enddate
|
||||||
//$cutoffdate2 = egw_time::to('now','ts');//-(3600*24*2);//BEFORE, startdate
|
//$cutoffdate2 = egw_time::to('now','ts');//-(3600*24*2);//BEFORE, startdate
|
||||||
$filter = array(
|
$filter = array(
|
||||||
'filterName' => (emailadmin_imapbase::$supportsORinQuery[$mail_ui->mail_bo->profileID]?lang('quicksearch'):lang('subject')),
|
'filterName' => (Mail::$supportsORinQuery[$mail_ui->mail_bo->profileID]?lang('quicksearch'):lang('subject')),
|
||||||
'type' => ($query['cat_id']?$query['cat_id']:(emailadmin_imapbase::$supportsORinQuery[$mail_ui->mail_bo->profileID]?'quick':'subject')),
|
'type' => ($query['cat_id']?$query['cat_id']:(Mail::$supportsORinQuery[$mail_ui->mail_bo->profileID]?'quick':'subject')),
|
||||||
'string' => $query['search'],
|
'string' => $query['search'],
|
||||||
'status' => 'any',
|
'status' => 'any',
|
||||||
//'range'=>"BETWEEN",'since'=> date("d-M-Y", $cutoffdate),'before'=> date("d-M-Y", $cutoffdate2)
|
//'range'=>"BETWEEN",'since'=> date("d-M-Y", $cutoffdate),'before'=> date("d-M-Y", $cutoffdate2)
|
||||||
@ -1472,7 +1473,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
$rows = $mail_ui->header2gridelements($sortResult['header'],$cols, $_folderName, $folderType=$toSchema);
|
$rows = $mail_ui->header2gridelements($sortResult['header'],$cols, $_folderName, $folderType=$toSchema);
|
||||||
//error_log(__METHOD__.__LINE__.array2string($rows));
|
//error_log(__METHOD__.__LINE__.array2string($rows));
|
||||||
|
|
||||||
if (mail_bo::$debugTimes) mail_bo::logRunTimes($starttime,null,'Folder:'.$_folderName.' Start:'.$query['start'].' NumRows:'.$query['num_rows'],__METHOD__.__LINE__);
|
if (Mail::$debugTimes) Mail::logRunTimes($starttime,null,'Folder:'.$_folderName.' Start:'.$query['start'].' NumRows:'.$query['num_rows'],__METHOD__.__LINE__);
|
||||||
return $rowsFetched['messages'];
|
return $rowsFetched['messages'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1596,7 +1597,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
*/
|
*/
|
||||||
public function header2gridelements($_headers, $cols, $_folderName, $_folderType=0)
|
public function header2gridelements($_headers, $cols, $_folderName, $_folderType=0)
|
||||||
{
|
{
|
||||||
if (mail_bo::$debugTimes) $starttime = microtime(true);
|
if (Mail::$debugTimes) $starttime = microtime(true);
|
||||||
$rv = array();
|
$rv = array();
|
||||||
$i=0;
|
$i=0;
|
||||||
foreach((array)$_headers as $header)
|
foreach((array)$_headers as $header)
|
||||||
@ -1747,7 +1748,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if (in_array("toaddress", $cols))
|
if (in_array("toaddress", $cols))
|
||||||
{
|
{
|
||||||
// sent or drafts or template folder means foldertype > 0, use to address instead of from
|
// sent or drafts or template folder means foldertype > 0, use to address instead of from
|
||||||
$data["toaddress"] = $header['to_address'];//mail_bo::htmlentities($header['to_address'],$this->charset);
|
$data["toaddress"] = $header['to_address'];//Mail::htmlentities($header['to_address'],$this->charset);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array("additionaltoaddress", $cols))
|
if (in_array("additionaltoaddress", $cols))
|
||||||
@ -1802,7 +1803,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
$rv[] = $data;
|
$rv[] = $data;
|
||||||
//error_log(__METHOD__.__LINE__.array2string($data));
|
//error_log(__METHOD__.__LINE__.array2string($data));
|
||||||
}
|
}
|
||||||
if (mail_bo::$debugTimes) mail_bo::logRunTimes($starttime,null,'Folder:'.$_folderName,__METHOD__.__LINE__);
|
if (Mail::$debugTimes) Mail::logRunTimes($starttime,null,'Folder:'.$_folderName,__METHOD__.__LINE__);
|
||||||
|
|
||||||
// ToDo: call this ONLY if labels change
|
// ToDo: call this ONLY if labels change
|
||||||
etemplate_widget::setElementAttribute('toolbar', 'actions', $this->get_toolbar_actions());
|
etemplate_widget::setElementAttribute('toolbar', 'actions', $this->get_toolbar_actions());
|
||||||
@ -1956,7 +1957,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
{
|
{
|
||||||
$headers['DATE'] = (is_array($envelope)&&$envelope['DATE']?$envelope['DATE']:'');
|
$headers['DATE'] = (is_array($envelope)&&$envelope['DATE']?$envelope['DATE']:'');
|
||||||
}
|
}
|
||||||
$content['mail_displaydate'] = mail_bo::_strtotime($headers['DATE'],'ts',true);
|
$content['mail_displaydate'] = Mail::_strtotime($headers['DATE'],'ts',true);
|
||||||
$content['mail_displaysubject'] = $subject;
|
$content['mail_displaysubject'] = $subject;
|
||||||
$linkData = array('menuaction'=>"mail.mail_ui.loadEmailBody","_messageID"=>$rowID);
|
$linkData = array('menuaction'=>"mail.mail_ui.loadEmailBody","_messageID"=>$rowID);
|
||||||
if (!empty($partID)) $linkData['_partID']=$partID;
|
if (!empty($partID)) $linkData['_partID']=$partID;
|
||||||
@ -2047,7 +2048,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
$mailbox = $hA['folder'];
|
$mailbox = $hA['folder'];
|
||||||
$acc_id = $hA['profileID'];
|
$acc_id = $hA['profileID'];
|
||||||
|
|
||||||
$attachmentHTML[$key]['mime_data'] = egw_link::set_data($value['mimeType'], 'emailadmin_imapbase::getAttachmentAccount', array(
|
$attachmentHTML[$key]['mime_data'] = egw_link::set_data($value['mimeType'], 'Mail::getAttachmentAccount', array(
|
||||||
$acc_id, $mailbox, $uid, $value['partID'], $value['is_winmail'], true
|
$acc_id, $mailbox, $uid, $value['partID'], $value['is_winmail'], true
|
||||||
));
|
));
|
||||||
$attachmentHTML[$key]['size']=egw_vfs::hsize($value['size']);
|
$attachmentHTML[$key]['size']=egw_vfs::hsize($value['size']);
|
||||||
@ -2256,8 +2257,8 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
$quotaPercent=round(($_usage*100)/$_limit);
|
$quotaPercent=round(($_usage*100)/$_limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
$quotaLimit=mail_bo::show_readable_size($_limit*1024);
|
$quotaLimit=Mail::show_readable_size($_limit*1024);
|
||||||
$quotaUsage=mail_bo::show_readable_size($_usage*1024);
|
$quotaUsage=Mail::show_readable_size($_usage*1024);
|
||||||
|
|
||||||
|
|
||||||
if($quotaPercent > 90 && $_limit>0) {
|
if($quotaPercent > 90 && $_limit>0) {
|
||||||
@ -2460,7 +2461,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if (!$display)
|
if (!$display)
|
||||||
{
|
{
|
||||||
$headers = Horde_Mime_Headers::parseHeaders($message);
|
$headers = Horde_Mime_Headers::parseHeaders($message);
|
||||||
$subject = str_replace('$$','__',mail_bo::decode_header($headers['SUBJECT']));
|
$subject = str_replace('$$','__',Mail::decode_header($headers['SUBJECT']));
|
||||||
html::safe_content_header($message, $subject.".eml", $mime='message/rfc822', $size=0, true, true);
|
html::safe_content_header($message, $subject.".eml", $mime='message/rfc822', $size=0, true, true);
|
||||||
echo $message;
|
echo $message;
|
||||||
}
|
}
|
||||||
@ -2525,7 +2526,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if ($succeeded)
|
if ($succeeded)
|
||||||
{
|
{
|
||||||
unset($headers['SUBJECT']);//already in filename
|
unset($headers['SUBJECT']);//already in filename
|
||||||
$infoSection = mail_bo::createHeaderInfoSection($headers, 'SUPPRESS', false);
|
$infoSection = Mail::createHeaderInfoSection($headers, 'SUPPRESS', false);
|
||||||
$props = array(array('name' => 'comment','val' => $infoSection));
|
$props = array(array('name' => 'comment','val' => $infoSection));
|
||||||
egw_vfs::proppatch($file,$props);
|
egw_vfs::proppatch($file,$props);
|
||||||
}
|
}
|
||||||
@ -2900,10 +2901,10 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
//error_log(__METHOD__.__LINE__.array2string($singleBodyPart));
|
//error_log(__METHOD__.__LINE__.array2string($singleBodyPart));
|
||||||
if($singleBodyPart['mimeType'] == 'text/plain')
|
if($singleBodyPart['mimeType'] == 'text/plain')
|
||||||
{
|
{
|
||||||
$newBody = @htmlentities($singleBodyPart['body'],ENT_QUOTES, strtoupper(mail_bo::$displayCharset));
|
$newBody = @htmlentities($singleBodyPart['body'],ENT_QUOTES, strtoupper(Mail::$displayCharset));
|
||||||
//error_log(__METHOD__.__LINE__.'..'.$newBody);
|
//error_log(__METHOD__.__LINE__.'..'.$newBody);
|
||||||
// if empty and charset is utf8 try sanitizing the string in question
|
// if empty and charset is utf8 try sanitizing the string in question
|
||||||
if (empty($newBody) && strtolower($singleBodyPart['charSet'])=='utf-8') $newBody = @htmlentities(iconv('utf-8', 'utf-8', $singleBodyPart['body']),ENT_QUOTES, strtoupper(mail_bo::$displayCharset));
|
if (empty($newBody) && strtolower($singleBodyPart['charSet'])=='utf-8') $newBody = @htmlentities(iconv('utf-8', 'utf-8', $singleBodyPart['body']),ENT_QUOTES, strtoupper(Mail::$displayCharset));
|
||||||
// if the conversion to htmlentities fails somehow, try without specifying the charset, which defaults to iso-
|
// if the conversion to htmlentities fails somehow, try without specifying the charset, which defaults to iso-
|
||||||
if (empty($newBody)) $newBody = htmlentities($singleBodyPart['body'],ENT_QUOTES);
|
if (empty($newBody)) $newBody = htmlentities($singleBodyPart['body'],ENT_QUOTES);
|
||||||
|
|
||||||
@ -2917,7 +2918,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
// redirect links for websites if you use no cookies
|
// redirect links for websites if you use no cookies
|
||||||
#if (!($GLOBALS['egw_info']['server']['usecookies']))
|
#if (!($GLOBALS['egw_info']['server']['usecookies']))
|
||||||
# $newBody = preg_replace("/href=(\"|\')((http(s?):\/\/)|(www\.))([\w,\-,\/,\?,\=,\.,&,!\n,\%,@,\(,\),\*,#,:,~,\+]+)(\"|\')/ie",
|
# $newBody = preg_replace("/href=(\"|\')((http(s?):\/\/)|(www\.))([\w,\-,\/,\?,\=,\.,&,!\n,\%,@,\(,\),\*,#,:,~,\+]+)(\"|\')/ie",
|
||||||
# "'href=\"$webserverURL/redirect.php?go='.@htmlentities(urlencode('http$4://$5$6'),ENT_QUOTES,\"mail_bo::$displayCharset\").'\"'", $newBody);
|
# "'href=\"$webserverURL/redirect.php?go='.@htmlentities(urlencode('http$4://$5$6'),ENT_QUOTES,\"Mail::$displayCharset\").'\"'", $newBody);
|
||||||
|
|
||||||
// create links for email addresses
|
// create links for email addresses
|
||||||
//TODO:if ($modifyURI) $this->parseEmail($newBody);
|
//TODO:if ($modifyURI) $this->parseEmail($newBody);
|
||||||
@ -2933,7 +2934,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
// since we do not display the message as HTML anymore we may want to insert good linebreaking (for visibility).
|
// since we do not display the message as HTML anymore we may want to insert good linebreaking (for visibility).
|
||||||
//error_log(__METHOD__.__LINE__.'..'.$newBody);
|
//error_log(__METHOD__.__LINE__.'..'.$newBody);
|
||||||
// dont break lines that start with > (> as the text was processed with htmlentities before)
|
// dont break lines that start with > (> as the text was processed with htmlentities before)
|
||||||
$newBody = "<pre>".mail_bo::wordwrap($newBody,90,"\n",'>')."</pre>";
|
$newBody = "<pre>".Mail::wordwrap($newBody,90,"\n",'>')."</pre>";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2944,7 +2945,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if ($useTidy && extension_loaded('tidy'))
|
if ($useTidy && extension_loaded('tidy'))
|
||||||
{
|
{
|
||||||
$tidy = new tidy();
|
$tidy = new tidy();
|
||||||
$cleaned = $tidy->repairString($newBody, mail_bo::$tidy_config,'utf8');
|
$cleaned = $tidy->repairString($newBody, Mail::$tidy_config,'utf8');
|
||||||
// Found errors. Strip it all so there's some output
|
// Found errors. Strip it all so there's some output
|
||||||
if($tidy->getStatus() == 2)
|
if($tidy->getStatus() == 2)
|
||||||
{
|
{
|
||||||
@ -2978,26 +2979,26 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
// the next line should not be needed, but produces better results on HTML 2 Text conversion,
|
// the next line should not be needed, but produces better results on HTML 2 Text conversion,
|
||||||
// as we switched off HTMLaweds tidy functionality
|
// as we switched off HTMLaweds tidy functionality
|
||||||
$newBody = str_replace(array('&amp;','<DIV><BR></DIV>',"<DIV> </DIV>",'<div> </div>'),array('&','<BR>','<BR>','<BR>'),$newBody);
|
$newBody = str_replace(array('&amp;','<DIV><BR></DIV>',"<DIV> </DIV>",'<div> </div>'),array('&','<BR>','<BR>','<BR>'),$newBody);
|
||||||
$newBody = $htmLawed->run($newBody,mail_bo::$htmLawed_config);
|
$newBody = $htmLawed->run($newBody,Mail::$htmLawed_config);
|
||||||
if ($hasOther && $preserveHTML) $newBody = $matches[1]. $newBody. $matches[3];
|
if ($hasOther && $preserveHTML) $newBody = $matches[1]. $newBody. $matches[3];
|
||||||
$alreadyHtmlLawed=true;
|
$alreadyHtmlLawed=true;
|
||||||
}
|
}
|
||||||
// do the cleanup, set for the use of purifier
|
// do the cleanup, set for the use of purifier
|
||||||
//$newBodyBuff = $newBody;
|
//$newBodyBuff = $newBody;
|
||||||
/* if (!$alreadyHtmlLawed)*/ mail_bo::getCleanHTML($newBody);
|
/* if (!$alreadyHtmlLawed)*/ Mail::getCleanHTML($newBody);
|
||||||
/*
|
/*
|
||||||
// in a way, this tests if we are having real utf-8 (the displayCharset) by now; we should if charsets reported (or detected) are correct
|
// in a way, this tests if we are having real utf-8 (the displayCharset) by now; we should if charsets reported (or detected) are correct
|
||||||
if (strtoupper(mail_bo::$displayCharset) == 'UTF-8')
|
if (strtoupper(Mail::$displayCharset) == 'UTF-8')
|
||||||
{
|
{
|
||||||
$test = @json_encode($newBody);
|
$test = @json_encode($newBody);
|
||||||
//error_log(__METHOD__.__LINE__.' ->'.strlen($singleBodyPart['body']).' Error:'.json_last_error().'<- BodyPart:#'.$test.'#');
|
//error_log(__METHOD__.__LINE__.' ->'.strlen($singleBodyPart['body']).' Error:'.json_last_error().'<- BodyPart:#'.$test.'#');
|
||||||
if (($test=="null" || $test === false || is_null($test)) && strlen($newBody)>0)
|
if (($test=="null" || $test === false || is_null($test)) && strlen($newBody)>0)
|
||||||
{
|
{
|
||||||
$newBody = $newBodyBuff;
|
$newBody = $newBodyBuff;
|
||||||
$tv = mail_bo::$htmLawed_config['tidy'];
|
$tv = Mail::$htmLawed_config['tidy'];
|
||||||
mail_bo::$htmLawed_config['tidy'] = 0;
|
Mail::$htmLawed_config['tidy'] = 0;
|
||||||
mail_bo::getCleanHTML($newBody);
|
Mail::getCleanHTML($newBody);
|
||||||
mail_bo::$htmLawed_config['tidy'] = $tv;
|
Mail::$htmLawed_config['tidy'] = $tv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@ -3123,7 +3124,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
{
|
{
|
||||||
if ($_type !="background")
|
if ($_type !="background")
|
||||||
{
|
{
|
||||||
$bo = emailadmin_imapbase::getInstance(false, mail_ui::$icServerID);
|
$bo = Mail::getInstance(false, mail_ui::$icServerID);
|
||||||
$attachment = $bo->getAttachmentByCID($_uid, $CID, $_partID);
|
$attachment = $bo->getAttachmentByCID($_uid, $CID, $_partID);
|
||||||
|
|
||||||
// only use data uri for "smaller" images, as otherwise the first display of the mail takes to long
|
// only use data uri for "smaller" images, as otherwise the first display of the mail takes to long
|
||||||
@ -3208,7 +3209,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
$this->changeProfile($icServerID);
|
$this->changeProfile($icServerID);
|
||||||
}
|
}
|
||||||
//error_log(__METHOD__.__LINE__.self::$delimiter.array2string($destination));
|
//error_log(__METHOD__.__LINE__.self::$delimiter.array2string($destination));
|
||||||
$importID = mail_bo::getRandomString();
|
$importID = Mail::getRandomString();
|
||||||
$importFailed = false;
|
$importFailed = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -3257,7 +3258,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
// check if formdata meets basic restrictions (in tmp dir, or vfs, mimetype, etc.)
|
// check if formdata meets basic restrictions (in tmp dir, or vfs, mimetype, etc.)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$tmpFileName = mail_bo::checkFileBasics($_formData,$importID);
|
$tmpFileName = Mail::checkFileBasics($_formData,$importID);
|
||||||
}
|
}
|
||||||
catch (egw_exception_wrong_userinput $e)
|
catch (egw_exception_wrong_userinput $e)
|
||||||
{
|
{
|
||||||
@ -3351,7 +3352,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if (empty($formData)) if (isset($_REQUEST['formData'])) $formData = $_REQUEST['formData'];
|
if (empty($formData)) if (isset($_REQUEST['formData'])) $formData = $_REQUEST['formData'];
|
||||||
//error_log(__METHOD__.__LINE__.':'.array2string($formData).' Mode:'.$mode.'->'.function_backtrace());
|
//error_log(__METHOD__.__LINE__.':'.array2string($formData).' Mode:'.$mode.'->'.function_backtrace());
|
||||||
$draftFolder = $this->mail_bo->getDraftFolder(false);
|
$draftFolder = $this->mail_bo->getDraftFolder(false);
|
||||||
$importID = mail_bo::getRandomString();
|
$importID = Mail::getRandomString();
|
||||||
|
|
||||||
// handling for mime-data hash
|
// handling for mime-data hash
|
||||||
if (!empty($formData['data']))
|
if (!empty($formData['data']))
|
||||||
@ -3416,7 +3417,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if (!$_messageID && !empty($_GET['_messageID'])) $_messageID = $_GET['_messageID'];
|
if (!$_messageID && !empty($_GET['_messageID'])) $_messageID = $_GET['_messageID'];
|
||||||
if (!$_partID && !empty($_GET['_partID'])) $_partID = $_GET['_partID'];
|
if (!$_partID && !empty($_GET['_partID'])) $_partID = $_GET['_partID'];
|
||||||
if (!$_htmloptions && !empty($_GET['_htmloptions'])) $_htmloptions = $_GET['_htmloptions'];
|
if (!$_htmloptions && !empty($_GET['_htmloptions'])) $_htmloptions = $_GET['_htmloptions'];
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."->".print_r($_messageID,true).",$_partID,$_htmloptions");
|
if(Mail::$debug) error_log(__METHOD__."->".print_r($_messageID,true).",$_partID,$_htmloptions");
|
||||||
if (empty($_messageID)) return "";
|
if (empty($_messageID)) return "";
|
||||||
$uidA = self::splitRowID($_messageID);
|
$uidA = self::splitRowID($_messageID);
|
||||||
$folder = $uidA['folder']; // all messages in one set are supposed to be within the same folder
|
$folder = $uidA['folder']; // all messages in one set are supposed to be within the same folder
|
||||||
@ -3460,7 +3461,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if ($folderName)
|
if ($folderName)
|
||||||
{
|
{
|
||||||
$fS = $this->mail_bo->getFolderStatus($folderName,false,false,false);
|
$fS = $this->mail_bo->getFolderStatus($folderName,false,false,false);
|
||||||
if (in_array($fS['shortDisplayName'],mail_bo::$autoFolders)) $fS['shortDisplayName']=lang($fS['shortDisplayName']);
|
if (in_array($fS['shortDisplayName'],Mail::$autoFolders)) $fS['shortDisplayName']=lang($fS['shortDisplayName']);
|
||||||
//error_log(__METHOD__.__LINE__.array2string($fS));
|
//error_log(__METHOD__.__LINE__.array2string($fS));
|
||||||
if ($fS['unseen'])
|
if ($fS['unseen'])
|
||||||
{
|
{
|
||||||
@ -3600,7 +3601,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
*/
|
*/
|
||||||
function ajax_renameFolder($_folderName, $_newName)
|
function ajax_renameFolder($_folderName, $_newName)
|
||||||
{
|
{
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' OldFolderName:'.array2string($_folderName).' NewName:'.array2string($_newName));
|
if (Mail::$debug) error_log(__METHOD__.__LINE__.' OldFolderName:'.array2string($_folderName).' NewName:'.array2string($_newName));
|
||||||
if ($_folderName)
|
if ($_folderName)
|
||||||
{
|
{
|
||||||
translation::add_app('mail');
|
translation::add_app('mail');
|
||||||
@ -3829,7 +3830,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
*/
|
*/
|
||||||
function ajax_MoveFolder($_folderName, $_target)
|
function ajax_MoveFolder($_folderName, $_target)
|
||||||
{
|
{
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__."Move Folder: $_folderName to Target: $_target");
|
if (Mail::$debug) error_log(__METHOD__.__LINE__."Move Folder: $_folderName to Target: $_target");
|
||||||
if ($_folderName)
|
if ($_folderName)
|
||||||
{
|
{
|
||||||
$decodedFolderName = $this->mail_bo->decodeEntityFolderName($_folderName);
|
$decodedFolderName = $this->mail_bo->decodeEntityFolderName($_folderName);
|
||||||
@ -4124,8 +4125,8 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
// Create mail app object
|
// Create mail app object
|
||||||
$mail = new mail_ui();
|
$mail = new mail_ui();
|
||||||
|
|
||||||
if (empty($icServerID)) $icServerID = $mail->mail_bo->profileID;
|
if (empty($icServerID)) $icServerID = $mail->Mail->profileID;
|
||||||
if ($icServerID != $mail->mail_bo->profileID) return;
|
if ($icServerID != $mail->Mail->profileID) return;
|
||||||
|
|
||||||
$vacation = $mail->gatherVacation($cachedVacations);
|
$vacation = $mail->gatherVacation($cachedVacations);
|
||||||
}
|
}
|
||||||
@ -4159,12 +4160,12 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
{
|
{
|
||||||
//error_log(__METHOD__.__LINE__.array2string($icServerId));
|
//error_log(__METHOD__.__LINE__.array2string($icServerId));
|
||||||
if (empty($icServerID)) $icServerID = $this->mail_bo->profileID;
|
if (empty($icServerID)) $icServerID = $this->mail_bo->profileID;
|
||||||
if (is_null(emailadmin_imapbase::$supportsORinQuery) || !isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]))
|
if (is_null(Mail::$supportsORinQuery) || !isset(Mail::$supportsORinQuery[$this->mail_bo->profileID]))
|
||||||
{
|
{
|
||||||
emailadmin_imapbase::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
Mail::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
||||||
if (!isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID])) emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
if (!isset(Mail::$supportsORinQuery[$this->mail_bo->profileID])) Mail::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
||||||
}
|
}
|
||||||
if (!emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID])
|
if (!Mail::$supportsORinQuery[$this->mail_bo->profileID])
|
||||||
{
|
{
|
||||||
unset($this->searchTypes['quick']);
|
unset($this->searchTypes['quick']);
|
||||||
unset($this->searchTypes['quickwithcc']);
|
unset($this->searchTypes['quickwithcc']);
|
||||||
@ -4385,7 +4386,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
*/
|
*/
|
||||||
function ajax_sendMDN($_messageList)
|
function ajax_sendMDN($_messageList)
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."->".array2string($_messageList));
|
if(Mail::$debug) error_log(__METHOD__."->".array2string($_messageList));
|
||||||
$uidA = self::splitRowID($_messageList['msg'][0]);
|
$uidA = self::splitRowID($_messageList['msg'][0]);
|
||||||
$folder = $uidA['folder']; // all messages in one set are supposed to be within the same folder
|
$folder = $uidA['folder']; // all messages in one set are supposed to be within the same folder
|
||||||
$this->mail_bo->sendMDN($uidA['msgUID'],$folder);
|
$this->mail_bo->sendMDN($uidA['msgUID'],$folder);
|
||||||
@ -4402,7 +4403,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
*/
|
*/
|
||||||
function ajax_flagMessages($_flag, $_messageList, $_sendJsonResponse=true)
|
function ajax_flagMessages($_flag, $_messageList, $_sendJsonResponse=true)
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."->".$_flag.':'.array2string($_messageList));
|
if(Mail::$debug) error_log(__METHOD__."->".$_flag.':'.array2string($_messageList));
|
||||||
translation::add_app('mail');
|
translation::add_app('mail');
|
||||||
$alreadyFlagged=false;
|
$alreadyFlagged=false;
|
||||||
$flag2check='';
|
$flag2check='';
|
||||||
@ -4420,12 +4421,12 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if (!empty($query['search']) || !empty($query['filter']))
|
if (!empty($query['search']) || !empty($query['filter']))
|
||||||
{
|
{
|
||||||
//([filterName] => Schnellsuche[type] => quick[string] => ebay[status] => any
|
//([filterName] => Schnellsuche[type] => quick[string] => ebay[status] => any
|
||||||
if (is_null(emailadmin_imapbase::$supportsORinQuery) || !isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]))
|
if (is_null(Mail::$supportsORinQuery) || !isset(Mail::$supportsORinQuery[$this->mail_bo->profileID]))
|
||||||
{
|
{
|
||||||
emailadmin_imapbase::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
Mail::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
||||||
if (!isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID])) emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
if (!isset(Mail::$supportsORinQuery[$this->mail_bo->profileID])) Mail::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
||||||
}
|
}
|
||||||
$filter = $filter2toggle = array('filterName' => (emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]?lang('quicksearch'):lang('subject')),'type' => ($query['cat_id']?$query['cat_id']:(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]?'quick':'subject')),'string' => $query['search'],'status' => 'any');
|
$filter = $filter2toggle = array('filterName' => (Mail::$supportsORinQuery[$this->mail_bo->profileID]?lang('quicksearch'):lang('subject')),'type' => ($query['cat_id']?$query['cat_id']:(Mail::$supportsORinQuery[$this->mail_bo->profileID]?'quick':'subject')),'string' => $query['search'],'status' => 'any');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -4469,13 +4470,13 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if (count($messageListForToggle)>0)
|
if (count($messageListForToggle)>0)
|
||||||
{
|
{
|
||||||
$flag2set = (strtolower($_flag));
|
$flag2set = (strtolower($_flag));
|
||||||
if(mail_bo::$debug) error_log(__METHOD__.__LINE__." toggle un$_flag -> $flag2set ".array2string($filter2toggle).array2string($messageListForToggle));
|
if(Mail::$debug) error_log(__METHOD__.__LINE__." toggle un$_flag -> $flag2set ".array2string($filter2toggle).array2string($messageListForToggle));
|
||||||
$this->mail_bo->flagMessages($flag2set, $messageListForToggle,$folder);
|
$this->mail_bo->flagMessages($flag2set, $messageListForToggle,$folder);
|
||||||
}
|
}
|
||||||
if (count($messageList)>0)
|
if (count($messageList)>0)
|
||||||
{
|
{
|
||||||
$flag2set = 'un'.$_flag;
|
$flag2set = 'un'.$_flag;
|
||||||
if(mail_bo::$debug) error_log(__METHOD__.__LINE__." $_flag -> $flag2set ".array2string($filter).array2string($messageList));
|
if(Mail::$debug) error_log(__METHOD__.__LINE__." $_flag -> $flag2set ".array2string($filter).array2string($messageList));
|
||||||
$this->mail_bo->flagMessages($flag2set, $messageList,$folder);
|
$this->mail_bo->flagMessages($flag2set, $messageList,$folder);
|
||||||
}
|
}
|
||||||
$alreadyFlagged=true;
|
$alreadyFlagged=true;
|
||||||
@ -4491,7 +4492,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
// since we toggle and we toggle by the filtered flag we must must change _flag
|
// since we toggle and we toggle by the filtered flag we must must change _flag
|
||||||
$_flag = ($query['filter']=='unseen' && $_flag=='read' ? 'read' : ($query['filter']=='seen'&& $_flag=='read'?'unread':($_flag==$query['filter']?'un'.$_flag:$_flag)));
|
$_flag = ($query['filter']=='unseen' && $_flag=='read' ? 'read' : ($query['filter']=='seen'&& $_flag=='read'?'unread':($_flag==$query['filter']?'un'.$_flag:$_flag)));
|
||||||
}
|
}
|
||||||
if(mail_bo::$debug) error_log(__METHOD__.__LINE__." flag all with $_flag on filter used:".array2string($filter));
|
if(Mail::$debug) error_log(__METHOD__.__LINE__." flag all with $_flag on filter used:".array2string($filter));
|
||||||
$_sR = $this->mail_bo->getSortedList(
|
$_sR = $this->mail_bo->getSortedList(
|
||||||
$folder,
|
$folder,
|
||||||
$sort=0,
|
$sort=0,
|
||||||
@ -4506,7 +4507,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__.__LINE__." $_flag all ".array2string($filter));
|
if(Mail::$debug) error_log(__METHOD__.__LINE__." $_flag all ".array2string($filter));
|
||||||
$alreadyFlagged=true;
|
$alreadyFlagged=true;
|
||||||
$uidA = self::splitRowID($_messageList['msg'][0]);
|
$uidA = self::splitRowID($_messageList['msg'][0]);
|
||||||
$folder = $uidA['folder']; // all messages in one set are supposed to be within the same folder
|
$folder = $uidA['folder']; // all messages in one set are supposed to be within the same folder
|
||||||
@ -4526,13 +4527,13 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
$hA = self::splitRowID($rowID);
|
$hA = self::splitRowID($rowID);
|
||||||
$messageList[] = $hA['msgUID'];
|
$messageList[] = $hA['msgUID'];
|
||||||
}
|
}
|
||||||
if(mail_bo::$debug) error_log(__METHOD__.__LINE__." $_flag in $folder:".array2string(((isset($_messageList['all']) && $_messageList['all']) ? 'all':$messageList)));
|
if(Mail::$debug) error_log(__METHOD__.__LINE__." $_flag in $folder:".array2string(((isset($_messageList['all']) && $_messageList['all']) ? 'all':$messageList)));
|
||||||
$this->mail_bo->flagMessages($_flag, ((isset($_messageList['all']) && $_messageList['all']) ? 'all':$messageList),$folder);
|
$this->mail_bo->flagMessages($_flag, ((isset($_messageList['all']) && $_messageList['all']) ? 'all':$messageList),$folder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."-> No messages selected.");
|
if(Mail::$debug) error_log(__METHOD__."-> No messages selected.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_sendJsonResponse)
|
if ($_sendJsonResponse)
|
||||||
@ -4569,7 +4570,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
*/
|
*/
|
||||||
function ajax_deleteMessages($_messageList,$_forceDeleteMethod=null)
|
function ajax_deleteMessages($_messageList,$_forceDeleteMethod=null)
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."->".print_r($_messageList,true).' Method:'.$_forceDeleteMethod);
|
if(Mail::$debug) error_log(__METHOD__."->".print_r($_messageList,true).' Method:'.$_forceDeleteMethod);
|
||||||
$error = null;
|
$error = null;
|
||||||
$filtered = false;
|
$filtered = false;
|
||||||
if ($_messageList=='all' || !empty($_messageList['msg']))
|
if ($_messageList=='all' || !empty($_messageList['msg']))
|
||||||
@ -4585,13 +4586,13 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if (!empty($query['search']) || !empty($query['filter']))
|
if (!empty($query['search']) || !empty($query['filter']))
|
||||||
{
|
{
|
||||||
//([filterName] => Schnellsuche[type] => quick[string] => ebay[status] => any
|
//([filterName] => Schnellsuche[type] => quick[string] => ebay[status] => any
|
||||||
if (is_null(emailadmin_imapbase::$supportsORinQuery) || !isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]))
|
if (is_null(Mail::$supportsORinQuery) || !isset(Mail::$supportsORinQuery[$this->mail_bo->profileID]))
|
||||||
{
|
{
|
||||||
emailadmin_imapbase::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
Mail::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
||||||
if (!isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID])) emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
if (!isset(Mail::$supportsORinQuery[$this->mail_bo->profileID])) Mail::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
||||||
}
|
}
|
||||||
$filtered = true;
|
$filtered = true;
|
||||||
$filter = array('filterName' => (emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]?lang('quicksearch'):lang('subject')),'type' => ($query['cat_id']?$query['cat_id']:(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]?'quick':'subject')),'string' => $query['search'],'status' => (!empty($query['filter'])?$query['filter']:'any'));
|
$filter = array('filterName' => (Mail::$supportsORinQuery[$this->mail_bo->profileID]?lang('quicksearch'):lang('subject')),'type' => ($query['cat_id']?$query['cat_id']:(Mail::$supportsORinQuery[$this->mail_bo->profileID]?'quick':'subject')),'string' => $query['search'],'status' => (!empty($query['filter'])?$query['filter']:'any'));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -4657,7 +4658,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."-> No messages selected.");
|
if(Mail::$debug) error_log(__METHOD__."-> No messages selected.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4672,7 +4673,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
*/
|
*/
|
||||||
function ajax_copyMessages($_folderName, $_messageList, $_copyOrMove='copy')
|
function ajax_copyMessages($_folderName, $_messageList, $_copyOrMove='copy')
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."->".$_folderName.':'.print_r($_messageList,true).' Method:'.$_copyOrMove);
|
if(Mail::$debug) error_log(__METHOD__."->".$_folderName.':'.print_r($_messageList,true).' Method:'.$_copyOrMove);
|
||||||
translation::add_app('mail');
|
translation::add_app('mail');
|
||||||
$_folderName = $this->mail_bo->decodeEntityFolderName($_folderName);
|
$_folderName = $this->mail_bo->decodeEntityFolderName($_folderName);
|
||||||
// only copy or move are supported as method
|
// only copy or move are supported as method
|
||||||
@ -4711,13 +4712,13 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
if (!empty($query['search']) || !empty($query['filter']))
|
if (!empty($query['search']) || !empty($query['filter']))
|
||||||
{
|
{
|
||||||
//([filterName] => Schnellsuche[type] => quick[string] => ebay[status] => any
|
//([filterName] => Schnellsuche[type] => quick[string] => ebay[status] => any
|
||||||
if (is_null(emailadmin_imapbase::$supportsORinQuery) || !isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]))
|
if (is_null(Mail::$supportsORinQuery) || !isset(Mail::$supportsORinQuery[$this->mail_bo->profileID]))
|
||||||
{
|
{
|
||||||
emailadmin_imapbase::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
Mail::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']), null, array(), 60*60*10);
|
||||||
if (!isset(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID])) emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
if (!isset(Mail::$supportsORinQuery[$this->mail_bo->profileID])) Mail::$supportsORinQuery[$this->mail_bo->profileID]=true;
|
||||||
}
|
}
|
||||||
$filtered = true;
|
$filtered = true;
|
||||||
$filter = array('filterName' => (emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]?lang('quicksearch'):lang('subject')),'type' => ($query['cat_id']?$query['cat_id']:(emailadmin_imapbase::$supportsORinQuery[$this->mail_bo->profileID]?'quick':'subject')),'string' => $query['search'],'status' => (!empty($query['filter'])?$query['filter']:'any'));
|
$filter = array('filterName' => (Mail::$supportsORinQuery[$this->mail_bo->profileID]?lang('quicksearch'):lang('subject')),'type' => ($query['cat_id']?$query['cat_id']:(Mail::$supportsORinQuery[$this->mail_bo->profileID]?'quick':'subject')),'string' => $query['search'],'status' => (!empty($query['filter'])?$query['filter']:'any'));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -4827,7 +4828,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(mail_bo::$debug) error_log(__METHOD__."-> No messages selected.");
|
if(Mail::$debug) error_log(__METHOD__."-> No messages selected.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,9 +12,9 @@
|
|||||||
/**
|
/**
|
||||||
* Wizard to create mail accounts
|
* Wizard to create mail accounts
|
||||||
*
|
*
|
||||||
* Extends emailadmin_wizard to allow non-admins to use it.
|
* Extends admin_mail to allow non-admins to use it.
|
||||||
*/
|
*/
|
||||||
class mail_wizard extends emailadmin_wizard
|
class mail_wizard extends admin_mail
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Prefix for callback names
|
* Prefix for callback names
|
||||||
@ -29,11 +29,11 @@ class mail_wizard extends emailadmin_wizard
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
// need emailadmin's app.css file
|
// need emailadmin's app.css file
|
||||||
egw_framework::includeCSS('emailadmin','app');
|
egw_framework::includeCSS('admin','app');
|
||||||
|
|
||||||
// and translations
|
// and translations
|
||||||
translation::add_app('emailadmin');
|
translation::add_app('admin');
|
||||||
|
|
||||||
egw_framework::validate_file('/emailadmin/js/app.js');
|
egw_framework::validate_file('/admin/js/app.js');
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -7,11 +7,13 @@
|
|||||||
* @author Stylite AG [info@stylite.de]
|
* @author Stylite AG [info@stylite.de]
|
||||||
* @author Ralf Becker <rb@stylite.de>
|
* @author Ralf Becker <rb@stylite.de>
|
||||||
* @author Philip Herbert <philip@knauber.de>
|
* @author Philip Herbert <philip@knauber.de>
|
||||||
* @copyright (c) 2014-15 by Stylite AG <info-AT-stylite.de>
|
* @copyright (c) 2014-16 by Stylite AG <info-AT-stylite.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api\Mail;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mail eSync plugin
|
* mail eSync plugin
|
||||||
*
|
*
|
||||||
@ -25,9 +27,9 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
private $backend;
|
private $backend;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instance of mail_bo
|
* Instance of Mail
|
||||||
*
|
*
|
||||||
* @var mail_bo
|
* @var Mail
|
||||||
*/
|
*/
|
||||||
private $mail;
|
private $mail;
|
||||||
|
|
||||||
@ -116,11 +118,11 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
if (!isset($GLOBALS['egw_setup']))
|
if (!isset($GLOBALS['egw_setup']))
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
emailadmin_account::read(self::$profileID);
|
Mail\Account::read(self::$profileID);
|
||||||
}
|
}
|
||||||
catch(Exception $e) {
|
catch(Exception $e) {
|
||||||
unset($e);
|
unset($e);
|
||||||
self::$profileID = emailadmin_account::get_default_acc_id();
|
self::$profileID = Mail\Account::get_default_acc_id();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($this->debugLevel>0) error_log(__METHOD__.'::'.__LINE__.' ProfileSelected:'.self::$profileID);
|
if ($this->debugLevel>0) error_log(__METHOD__.'::'.__LINE__.' ProfileSelected:'.self::$profileID);
|
||||||
@ -139,7 +141,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
$identities = array();
|
$identities = array();
|
||||||
if (!isset($hook_data['setup']) && in_array($hook_data['type'], array('user', 'group')))
|
if (!isset($hook_data['setup']) && in_array($hook_data['type'], array('user', 'group')))
|
||||||
{
|
{
|
||||||
$identities = iterator_to_array(emailadmin_account::search((int)$hook_data['account_id']));
|
$identities = iterator_to_array(Mail\Account::search((int)$hook_data['account_id']));
|
||||||
}
|
}
|
||||||
$identities += array(
|
$identities += array(
|
||||||
'G' => lang('Primary Profile'),
|
'G' => lang('Primary Profile'),
|
||||||
@ -232,7 +234,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
$this->account = $account;
|
$this->account = $account;
|
||||||
// todo: tell mail which account to use
|
// todo: tell mail which account to use
|
||||||
//error_log(__METHOD__.__LINE__.' create object with ProfileID:'.array2string(self::$profileID));
|
//error_log(__METHOD__.__LINE__.' create object with ProfileID:'.array2string(self::$profileID));
|
||||||
$this->mail = mail_bo::getInstance(false,self::$profileID,true,false,true);
|
$this->mail = Mail::getInstance(false,self::$profileID,true,false,true);
|
||||||
if (self::$profileID == 0 && isset($this->mail->icServer->ImapServerId) && !empty($this->mail->icServer->ImapServerId)) self::$profileID = $this->mail->icServer->ImapServerId;
|
if (self::$profileID == 0 && isset($this->mail->icServer->ImapServerId) && !empty($this->mail->icServer->ImapServerId)) self::$profileID = $this->mail->icServer->ImapServerId;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -352,11 +354,11 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
if ($this->debugLevel>0) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__."): Smartdata = ".array2string($smartdata));
|
if ($this->debugLevel>0) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__."): Smartdata = ".array2string($smartdata));
|
||||||
//error_log("IMAP-Sendmail: Smartdata = ".array2string($smartdata));
|
//error_log("IMAP-Sendmail: Smartdata = ".array2string($smartdata));
|
||||||
|
|
||||||
// initialize our mail_bo
|
// initialize our Mail
|
||||||
if (!isset($this->mail)) $this->mail = mail_bo::getInstance(false,self::$profileID,true,false,true);
|
if (!isset($this->mail)) $this->mail = Mail::getInstance(false,self::$profileID,true,false,true);
|
||||||
$activeMailProfiles = $this->mail->getAccountIdentities(self::$profileID);
|
$activeMailProfiles = $this->mail->getAccountIdentities(self::$profileID);
|
||||||
// use the standardIdentity
|
// use the standardIdentity
|
||||||
$activeMailProfile = mail_bo::getStandardIdentityForProfile($activeMailProfiles,self::$profileID);
|
$activeMailProfile = Mail::getStandardIdentityForProfile($activeMailProfiles,self::$profileID);
|
||||||
|
|
||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__.")".' ProfileID:'.self::$profileID.' ActiveMailProfile:'.array2string($activeMailProfile));
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__.")".' ProfileID:'.self::$profileID.' ActiveMailProfile:'.array2string($activeMailProfile));
|
||||||
|
|
||||||
@ -366,28 +368,28 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
// Horde SMTP Class uses utf-8 by default. as we set charset always to utf-8
|
// Horde SMTP Class uses utf-8 by default. as we set charset always to utf-8
|
||||||
$mailObject->Sender = $activeMailProfile['ident_email'];
|
$mailObject->Sender = $activeMailProfile['ident_email'];
|
||||||
$mailObject->From = $activeMailProfile['ident_email'];
|
$mailObject->From = $activeMailProfile['ident_email'];
|
||||||
$mailObject->FromName = $mailObject->EncodeHeader(mail_bo::generateIdentityString($activeMailProfile,false));
|
$mailObject->FromName = $mailObject->EncodeHeader(Mail::generateIdentityString($activeMailProfile,false));
|
||||||
$mailObject->AddCustomHeader('X-Mailer: mail-Activesync');
|
$mailObject->AddCustomHeader('X-Mailer: mail-Activesync');
|
||||||
|
|
||||||
|
|
||||||
// prepare addressee list; moved the adding of addresses to the mailobject down
|
// prepare addressee list; moved the adding of addresses to the mailobject down
|
||||||
// to
|
// to
|
||||||
|
|
||||||
foreach(emailadmin_imapbase::parseAddressList($mailObject->getHeader("To")) as $addressObject) {
|
foreach(Mail::parseAddressList($mailObject->getHeader("To")) as $addressObject) {
|
||||||
if (!$addressObject->valid) continue;
|
if (!$addressObject->valid) continue;
|
||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__.") Header Sentmail To: ".array2string($addressObject) );
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__.") Header Sentmail To: ".array2string($addressObject) );
|
||||||
//$mailObject->AddAddress($addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : ''),$addressObject->personal);
|
//$mailObject->AddAddress($addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : ''),$addressObject->personal);
|
||||||
$toMailAddr[] = imap_rfc822_write_address($addressObject->mailbox, $addressObject->host, $addressObject->personal);
|
$toMailAddr[] = imap_rfc822_write_address($addressObject->mailbox, $addressObject->host, $addressObject->personal);
|
||||||
}
|
}
|
||||||
// CC
|
// CC
|
||||||
foreach(emailadmin_imapbase::parseAddressList($mailObject->getHeader("Cc")) as $addressObject) {
|
foreach(Mail::parseAddressList($mailObject->getHeader("Cc")) as $addressObject) {
|
||||||
if (!$addressObject->valid) continue;
|
if (!$addressObject->valid) continue;
|
||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__.") Header Sentmail CC: ".array2string($addressObject) );
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__.") Header Sentmail CC: ".array2string($addressObject) );
|
||||||
//$mailObject->AddCC($addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : ''),$addressObject->personal);
|
//$mailObject->AddCC($addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : ''),$addressObject->personal);
|
||||||
$ccMailAddr[] = imap_rfc822_write_address($addressObject->mailbox, $addressObject->host, $addressObject->personal);
|
$ccMailAddr[] = imap_rfc822_write_address($addressObject->mailbox, $addressObject->host, $addressObject->personal);
|
||||||
}
|
}
|
||||||
// BCC
|
// BCC
|
||||||
foreach(emailadmin_imapbase::parseAddressList($mailObject->getHeader("Bcc")) as $addressObject) {
|
foreach(Mail::parseAddressList($mailObject->getHeader("Bcc")) as $addressObject) {
|
||||||
if (!$addressObject->valid) continue;
|
if (!$addressObject->valid) continue;
|
||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__.") Header Sentmail BCC: ".array2string($addressObject) );
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."(".__LINE__.") Header Sentmail BCC: ".array2string($addressObject) );
|
||||||
//$mailObject->AddBCC($addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : ''),$addressObject->personal);
|
//$mailObject->AddBCC($addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : ''),$addressObject->personal);
|
||||||
@ -471,7 +473,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
$toCount = 0;
|
$toCount = 0;
|
||||||
//error_log(__METHOD__.__LINE__.array2string($toMailAddr));
|
//error_log(__METHOD__.__LINE__.array2string($toMailAddr));
|
||||||
foreach((array)$toMailAddr as $address) {
|
foreach((array)$toMailAddr as $address) {
|
||||||
foreach(emailadmin_imapbase::parseAddressList((get_magic_quotes_gpc()?stripslashes($address):$address)) as $addressObject) {
|
foreach(Mail::parseAddressList((get_magic_quotes_gpc()?stripslashes($address):$address)) as $addressObject) {
|
||||||
$emailAddress = $addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : '');
|
$emailAddress = $addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : '');
|
||||||
if ($ClientSideMeetingRequest === true && $allowSendingInvitations == 'sendifnocalnotif' &&
|
if ($ClientSideMeetingRequest === true && $allowSendingInvitations == 'sendifnocalnotif' &&
|
||||||
calendar_boupdate::email_update_requested($emailAddress, isset($cSMRMethod) ? $cSMRMethod : 'REQUEST',
|
calendar_boupdate::email_update_requested($emailAddress, isset($cSMRMethod) ? $cSMRMethod : 'REQUEST',
|
||||||
@ -486,7 +488,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
}
|
}
|
||||||
$ccCount = 0;
|
$ccCount = 0;
|
||||||
foreach((array)$ccMailAddr as $address) {
|
foreach((array)$ccMailAddr as $address) {
|
||||||
foreach(emailadmin_imapbase::parseAddressList((get_magic_quotes_gpc()?stripslashes($address):$address)) as $addressObject) {
|
foreach(Mail::parseAddressList((get_magic_quotes_gpc()?stripslashes($address):$address)) as $addressObject) {
|
||||||
$emailAddress = $addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : '');
|
$emailAddress = $addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : '');
|
||||||
if ($ClientSideMeetingRequest === true && $allowSendingInvitations == 'sendifnocalnotif' && calendar_boupdate::email_update_requested($emailAddress)) continue;
|
if ($ClientSideMeetingRequest === true && $allowSendingInvitations == 'sendifnocalnotif' && calendar_boupdate::email_update_requested($emailAddress)) continue;
|
||||||
$mailObject->AddCC($emailAddress, $addressObject->personal);
|
$mailObject->AddCC($emailAddress, $addressObject->personal);
|
||||||
@ -495,7 +497,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
}
|
}
|
||||||
$bccCount = 0;
|
$bccCount = 0;
|
||||||
foreach((array)$bccMailAddr as $address) {
|
foreach((array)$bccMailAddr as $address) {
|
||||||
foreach(emailadmin_imapbase::parseAddressList((get_magic_quotes_gpc()?stripslashes($address):$address)) as $addressObject) {
|
foreach(Mail::parseAddressList((get_magic_quotes_gpc()?stripslashes($address):$address)) as $addressObject) {
|
||||||
$emailAddress = $addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : '');
|
$emailAddress = $addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : '');
|
||||||
if ($ClientSideMeetingRequest === true && $allowSendingInvitations == 'sendifnocalnotif' && calendar_boupdate::email_update_requested($emailAddress)) continue;
|
if ($ClientSideMeetingRequest === true && $allowSendingInvitations == 'sendifnocalnotif' && calendar_boupdate::email_update_requested($emailAddress)) continue;
|
||||||
$mailObject->AddBCC($emailAddress, $addressObject->personal);
|
$mailObject->AddBCC($emailAddress, $addressObject->personal);
|
||||||
@ -518,9 +520,9 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' ActiveMailProfile:'.array2string($activeMailProfile));
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' ActiveMailProfile:'.array2string($activeMailProfile));
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$acc = emailadmin_account::read($this->mail->icServer->ImapServerId);
|
$acc = Mail\Account::read($this->mail->icServer->ImapServerId);
|
||||||
//error_log(__METHOD__.__LINE__.array2string($acc));
|
//error_log(__METHOD__.__LINE__.array2string($acc));
|
||||||
$_signature = emailadmin_account::read_identity($acc['ident_id'],true);
|
$_signature = Mail\Account::read_identity($acc['ident_id'],true);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
@ -536,7 +538,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
$beforePlain = $beforeHtml = "";
|
$beforePlain = $beforeHtml = "";
|
||||||
$beforeHtml = ($disableRuler ?' <br>':' <br><hr style="border:dotted 1px silver; width:90%; border:dotted 1px silver;">');
|
$beforeHtml = ($disableRuler ?' <br>':' <br><hr style="border:dotted 1px silver; width:90%; border:dotted 1px silver;">');
|
||||||
$beforePlain = ($disableRuler ?"\r\n\r\n":"\r\n\r\n-- \r\n");
|
$beforePlain = ($disableRuler ?"\r\n\r\n":"\r\n\r\n-- \r\n");
|
||||||
$sigText = emailadmin_imapbase::merge($signature,array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
$sigText = Mail::merge($signature,array($GLOBALS['egw']->accounts->id2name($GLOBALS['egw_info']['user']['account_id'],'person_id')));
|
||||||
if ($this->debugLevel>0) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' Signature to use:'.$sigText);
|
if ($this->debugLevel>0) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' Signature to use:'.$sigText);
|
||||||
$sigTextHtml = $beforeHtml.$sigText;
|
$sigTextHtml = $beforeHtml.$sigText;
|
||||||
$sigTextPlain = $beforePlain.translation::convertHTMLToText($sigText);
|
$sigTextPlain = $beforePlain.translation::convertHTMLToText($sigText);
|
||||||
@ -747,7 +749,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
}
|
}
|
||||||
if (count($folderArray) > 0) {
|
if (count($folderArray) > 0) {
|
||||||
foreach((array)$bccMailAddr as $address) {
|
foreach((array)$bccMailAddr as $address) {
|
||||||
foreach(emailadmin_imapbase::parseAddressList((get_magic_quotes_gpc()?stripslashes($address):$address)) as $addressObject) {
|
foreach(Mail::parseAddressList((get_magic_quotes_gpc()?stripslashes($address):$address)) as $addressObject) {
|
||||||
$emailAddress = $addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : '');
|
$emailAddress = $addressObject->mailbox. ($addressObject->host ? '@'.$addressObject->host : '');
|
||||||
$mailAddr[] = array($emailAddress, $addressObject->personal);
|
$mailAddr[] = array($emailAddress, $addressObject->personal);
|
||||||
}
|
}
|
||||||
@ -826,7 +828,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
if (!$mimesupport && ($key = array_search('4', $bodypreference))) unset($bodypreference[$key]);
|
if (!$mimesupport && ($key = array_search('4', $bodypreference))) unset($bodypreference[$key]);
|
||||||
|
|
||||||
//$this->debugLevel=4;
|
//$this->debugLevel=4;
|
||||||
if (!isset($this->mail)) $this->mail = mail_bo::getInstance(false,self::$profileID,true,false,true);
|
if (!isset($this->mail)) $this->mail = Mail::getInstance(false,self::$profileID,true,false,true);
|
||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' FolderID:'.$folderid.' ID:'.$id.' TruncSize:'.$truncsize.' Bodypreference: '.array2string($bodypreference));
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' FolderID:'.$folderid.' ID:'.$id.' TruncSize:'.$truncsize.' Bodypreference: '.array2string($bodypreference));
|
||||||
$account = $_folderName = $xid = null;
|
$account = $_folderName = $xid = null;
|
||||||
$this->splitID($folderid,$account,$_folderName,$xid);
|
$this->splitID($folderid,$account,$_folderName,$xid);
|
||||||
@ -1194,7 +1196,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
|
|
||||||
$this->splitID($folderid, $account, $folder);
|
$this->splitID($folderid, $account, $folder);
|
||||||
|
|
||||||
if (!isset($this->mail)) $this->mail = mail_bo::getInstance(false,self::$profileID,true,false,true);
|
if (!isset($this->mail)) $this->mail = Mail::getInstance(false,self::$profileID,true,false,true);
|
||||||
|
|
||||||
$this->mail->reopen($folder);
|
$this->mail->reopen($folder);
|
||||||
$attachment = $this->mail->getAttachment($id,$part,0,false,true,$folder);
|
$attachment = $this->mail->getAttachment($id,$part,0,false,true,$folder);
|
||||||
@ -1227,7 +1229,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
|
|
||||||
$this->splitID($folderid, $account, $folder);
|
$this->splitID($folderid, $account, $folder);
|
||||||
|
|
||||||
if (!isset($this->mail)) $this->mail = mail_bo::getInstance(false,self::$profileID,true,false,true);
|
if (!isset($this->mail)) $this->mail = Mail::getInstance(false,self::$profileID,true,false,true);
|
||||||
|
|
||||||
$this->mail->reopen($folder);
|
$this->mail->reopen($folder);
|
||||||
$attachment = $this->mail->getAttachment($id,$part,0,false,true,$folder);
|
$attachment = $this->mail->getAttachment($id,$part,0,false,true,$folder);
|
||||||
@ -1315,7 +1317,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
$this->splitID($folderid, $account, $srcFolder);
|
$this->splitID($folderid, $account, $srcFolder);
|
||||||
$this->splitID($newfolderid, $account, $destFolder);
|
$this->splitID($newfolderid, $account, $destFolder);
|
||||||
debugLog("IMAP-MoveMessage: (SourceFolder: '$srcFolder' id: '$id' DestFolder: '$destFolder' )");
|
debugLog("IMAP-MoveMessage: (SourceFolder: '$srcFolder' id: '$id' DestFolder: '$destFolder' )");
|
||||||
if (!isset($this->mail)) $this->mail = mail_bo::getInstance(false,self::$profileID,true,false,true);
|
if (!isset($this->mail)) $this->mail = Mail::getInstance(false,self::$profileID,true,false,true);
|
||||||
$this->mail->reopen($destFolder);
|
$this->mail->reopen($destFolder);
|
||||||
$status = $this->mail->getFolderStatus($destFolder);
|
$status = $this->mail->getFolderStatus($destFolder);
|
||||||
$uidNext = $status['uidnext'];
|
$uidNext = $status['uidnext'];
|
||||||
@ -1500,10 +1502,10 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
// other types may be possible - we support quicksearch first (freeText in subject and from (or TO in Sent Folder))
|
// other types may be possible - we support quicksearch first (freeText in subject and from (or TO in Sent Folder))
|
||||||
if (is_null(emailadmin_imapbase::$supportsORinQuery) || !isset(emailadmin_imapbase::$supportsORinQuery[self::$profileID]))
|
if (is_null(Mail::$supportsORinQuery) || !isset(Mail::$supportsORinQuery[self::$profileID]))
|
||||||
{
|
{
|
||||||
emailadmin_imapbase::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']),$callback=null,$callback_params=array(),$expiration=60*60*10);
|
Mail::$supportsORinQuery = egw_cache::getCache(egw_cache::INSTANCE,'email','supportsORinQuery'.trim($GLOBALS['egw_info']['user']['account_id']),$callback=null,$callback_params=array(),$expiration=60*60*10);
|
||||||
if (!isset(emailadmin_imapbase::$supportsORinQuery[self::$profileID])) emailadmin_imapbase::$supportsORinQuery[self::$profileID]=true;
|
if (!isset(Mail::$supportsORinQuery[self::$profileID])) Mail::$supportsORinQuery[self::$profileID]=true;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
if (isset($searchquery['searchfreetext']))
|
if (isset($searchquery['searchfreetext']))
|
||||||
@ -1519,8 +1521,8 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' ProfileID:'.self::$profileID.' FolderID:'.$folderid.' Foldername:'.$_folderName);
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' ProfileID:'.self::$profileID.' FolderID:'.$folderid.' Foldername:'.$_folderName);
|
||||||
$this->_connect($account);
|
$this->_connect($account);
|
||||||
// this should not be needed ???
|
// this should not be needed ???
|
||||||
emailadmin_imapbase::$supportsORinQuery[self::$profileID]=true; // trigger quicksearch (if possible)
|
Mail::$supportsORinQuery[self::$profileID]=true; // trigger quicksearch (if possible)
|
||||||
$_filter = array('type'=> (emailadmin_imapbase::$supportsORinQuery[self::$profileID]?'quick':'subject'),
|
$_filter = array('type'=> (Mail::$supportsORinQuery[self::$profileID]?'quick':'subject'),
|
||||||
'string'=> $searchText,
|
'string'=> $searchText,
|
||||||
'status'=>'any'
|
'status'=>'any'
|
||||||
);
|
);
|
||||||
@ -1704,7 +1706,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.": on $folderid -> $folder ($account) type: ". $type);
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.": on $folderid -> $folder ($account) type: ". $type);
|
||||||
if ($type != 'mail') return false;
|
if ($type != 'mail') return false;
|
||||||
|
|
||||||
if (!isset($this->mail)) $this->mail = mail_bo::getInstance(false,self::$profileID,true,false,true);
|
if (!isset($this->mail)) $this->mail = Mail::getInstance(false,self::$profileID,true,false,true);
|
||||||
|
|
||||||
$changes = array();
|
$changes = array();
|
||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.": on $folderid ($folder) stat: ". $syncstate);
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.": on $folderid ($folder) stat: ". $syncstate);
|
||||||
|
@ -32,6 +32,9 @@ include(dirname(__DIR__).'/header.inc.php');
|
|||||||
|
|
||||||
$headertime = microtime(true);
|
$headertime = microtime(true);
|
||||||
|
|
||||||
|
use EGroupware\Api\Mail\Account as emailadmin_account;
|
||||||
|
use EGroupware\Api\Mail\Imap as emailadmin_imap;
|
||||||
|
|
||||||
// on which mail account do we work, if not specified use default one (connects to imap server!)
|
// on which mail account do we work, if not specified use default one (connects to imap server!)
|
||||||
$acc_id = isset($_GET['acc_id']) && (int)$_GET['acc_id'] > 0 ? (int)$_GET['acc_id'] : emailadmin_account::get_default_acc_id();
|
$acc_id = isset($_GET['acc_id']) && (int)$_GET['acc_id'] > 0 ? (int)$_GET['acc_id'] : emailadmin_account::get_default_acc_id();
|
||||||
// calling emailadmin_account::read with explicit account_id to not cache object for current user!
|
// calling emailadmin_account::read with explicit account_id to not cache object for current user!
|
||||||
|
@ -32,9 +32,9 @@ $setup_info['mail']['hooks']['search_link'] = 'mail_hooks::search_link';
|
|||||||
$setup_info['mail']['hooks']['admin'] = 'mail_hooks::admin';
|
$setup_info['mail']['hooks']['admin'] = 'mail_hooks::admin';
|
||||||
$setup_info['mail']['hooks']['settings'] = 'mail_hooks::settings';
|
$setup_info['mail']['hooks']['settings'] = 'mail_hooks::settings';
|
||||||
$setup_info['mail']['hooks']['sidebox_menu'] = 'mail_hooks::sidebox_menu';
|
$setup_info['mail']['hooks']['sidebox_menu'] = 'mail_hooks::sidebox_menu';
|
||||||
$setup_info['mail']['hooks']['session_creation'] = 'mail_bo::resetConnectionErrorCache';
|
$setup_info['mail']['hooks']['session_creation'] = 'EGroupware\\Api\\Mail::resetConnectionErrorCache';
|
||||||
$setup_info['mail']['hooks']['verify_settings'] = 'mail_bo::forcePrefReload';
|
$setup_info['mail']['hooks']['verify_settings'] = 'EGroupware\\Api\\Mail::forcePrefReload';
|
||||||
$setup_info['mail']['hooks']['clear_cache'] = 'mail_bo::unsetCachedObjects';
|
$setup_info['mail']['hooks']['clear_cache'] = 'EGroupware\\Api\\Mail::unsetCachedObjects';
|
||||||
$setup_info['mail']['hooks']['check_notify'] = 'mail_hooks::notification_check_mailbox';
|
$setup_info['mail']['hooks']['check_notify'] = 'mail_hooks::notification_check_mailbox';
|
||||||
$setup_info['mail']['hooks']['emailadmin_edit'] = 'mail_hooks::emailadmin_edit';
|
$setup_info['mail']['hooks']['emailadmin_edit'] = 'mail_hooks::emailadmin_edit';
|
||||||
|
|
||||||
|
@ -30,6 +30,8 @@ $appname = $_GET['app'] && $GLOBALS['egw_info']['apps'][$_GET['app']] ? $_GET['a
|
|||||||
$cats = new categories('', $appname);
|
$cats = new categories('', $appname);
|
||||||
$categories = $cats->return_array('all',0, false, '', 'ASC','',$appname==categories::GLOBAL_APPNAME);
|
$categories = $cats->return_array('all',0, false, '', 'ASC','',$appname==categories::GLOBAL_APPNAME);
|
||||||
|
|
||||||
|
error_log('categories='.array2string($categories));
|
||||||
|
|
||||||
$content = "/* Category CSS for $appname */\n\n";
|
$content = "/* Category CSS for $appname */\n\n";
|
||||||
|
|
||||||
foreach($categories as $cat)
|
foreach($categories as $cat)
|
||||||
|
@ -36,40 +36,11 @@ class common
|
|||||||
* @param $category =LC_ALL category to set, see setlocal function
|
* @param $category =LC_ALL category to set, see setlocal function
|
||||||
* @param $charset =null default system charset
|
* @param $charset =null default system charset
|
||||||
* @return string the local (or best estimate) set
|
* @return string the local (or best estimate) set
|
||||||
|
* @deprecated use Api\Preferences::setlocal($category,$charset)
|
||||||
*/
|
*/
|
||||||
static function setlocale($category=LC_ALL,$charset=null)
|
static function setlocale($category=LC_ALL, $charset=null)
|
||||||
{
|
{
|
||||||
$lang = $GLOBALS['egw_info']['user']['preferences']['common']['lang'];
|
return Api\Preferences::setlocale($category, $charset);
|
||||||
$country = $GLOBALS['egw_info']['user']['preferences']['common']['country'];
|
|
||||||
|
|
||||||
if (strlen($lang) == 2)
|
|
||||||
{
|
|
||||||
$country_from_lang = strtoupper($lang);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
list($lang,$lang2) = explode('-',$lang);
|
|
||||||
$country_from_lang = strtoupper($lang2);
|
|
||||||
}
|
|
||||||
if (is_null($charset)) $charset = translation::charset();
|
|
||||||
|
|
||||||
foreach(array(
|
|
||||||
$lang.'_'.$country,
|
|
||||||
$lang.'_'.$country_from_lang,
|
|
||||||
$lang,
|
|
||||||
'en_US',
|
|
||||||
'C',
|
|
||||||
) as $local)
|
|
||||||
{
|
|
||||||
if (($ret = setlocale($category,$local.'@'.$charset)) ||
|
|
||||||
($ret = setlocale($category,$local)))
|
|
||||||
{
|
|
||||||
//error_log(__METHOD__."($category,$charset) lang=$lang, country=$country, country_from_lang=$country_from_lang: returning '$ret'");
|
|
||||||
return $ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
error_log(__METHOD__."($category,$charset) lang=$lang, country=$country, country_from_lang=$country_from_lang: Could not set local!");
|
|
||||||
return false; // should not happen, as the 'C' local should at least be available everywhere
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -918,7 +889,7 @@ class common
|
|||||||
* @param int $t =0 timestamp, default current time
|
* @param int $t =0 timestamp, default current time
|
||||||
* @param string $format ='' timeformat, default '' = read from the user prefernces
|
* @param string $format ='' timeformat, default '' = read from the user prefernces
|
||||||
* @param boolean $adjust_to_usertime =true should datetime::tz_offset be added to $t or not, default true
|
* @param boolean $adjust_to_usertime =true should datetime::tz_offset be added to $t or not, default true
|
||||||
* @deprecated use egw_time::to($time, $format) egw_time::server2user($time, $format)
|
* @deprecated use Api\DateTime::to($time, $format) Api\DateTime::server2user($time, $format)
|
||||||
* @return string the formated date/time
|
* @return string the formated date/time
|
||||||
*/
|
*/
|
||||||
static function show_date($t = 0, $format = '', $adjust_to_usertime=true)
|
static function show_date($t = 0, $format = '', $adjust_to_usertime=true)
|
||||||
@ -1009,18 +980,11 @@ class common
|
|||||||
*
|
*
|
||||||
* @param string $str
|
* @param string $str
|
||||||
* @return string
|
* @return string
|
||||||
|
* @deprecated use Api\Translation::to_ascii
|
||||||
*/
|
*/
|
||||||
public static function transliterate($str)
|
public static function transliterate($str)
|
||||||
{
|
{
|
||||||
static $extra = array(
|
return Api\Translation::to_ascii($str);
|
||||||
'ß' => 'ss',
|
|
||||||
' ' => '',
|
|
||||||
);
|
|
||||||
$entities = htmlentities($str, ENT_QUOTES,translation::charset());
|
|
||||||
$extra_replaced = str_replace(array_keys($extra),array_values($extra),$entities);
|
|
||||||
$umlauts = preg_replace('/&([aAuUoO])uml;/','\\1e',$extra_replaced); // replace german umlauts with the letter plus one 'e'
|
|
||||||
$accents = preg_replace('/&([a-zA-Z])(grave|acute|circ|ring|cedil|tilde|slash|uml);/','\\1',$umlauts); // remove all types of acents
|
|
||||||
return preg_replace('/&([a-zA-Z]+|#[0-9]+|);/','',$accents); // remove all other entities
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1033,37 +997,11 @@ class common
|
|||||||
* @param string $account account-name (lid)
|
* @param string $account account-name (lid)
|
||||||
* @param string $domain =null domain-name or null to use eGW's default domain $GLOBALS['egw_info']['server']['mail_suffix]
|
* @param string $domain =null domain-name or null to use eGW's default domain $GLOBALS['egw_info']['server']['mail_suffix]
|
||||||
* @return string with email address
|
* @return string with email address
|
||||||
|
* @deprecated use Api\Accounts::email($first, $last, $account, $domain)
|
||||||
*/
|
*/
|
||||||
static function email_address($first,$last,$account,$domain=null)
|
static function email_address($first,$last,$account,$domain=null)
|
||||||
{
|
{
|
||||||
//echo "<p align=right>common::email_address('$first','$last','$account')";
|
return Api\Accounts::email($first, $last, $account, $domain);
|
||||||
foreach (array('first','last','account') as $name)
|
|
||||||
{
|
|
||||||
$$name = self::transliterate($$name);
|
|
||||||
}
|
|
||||||
//echo " --> ('$first', '$last', '$account')";
|
|
||||||
if (!$first && !$last) // fallback to the account-name, if real names contain only special chars
|
|
||||||
{
|
|
||||||
$first = '';
|
|
||||||
$last = $account;
|
|
||||||
}
|
|
||||||
if (!$first || !$last)
|
|
||||||
{
|
|
||||||
$dot = $underscore = '';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$dot = '.';
|
|
||||||
$underscore = '_';
|
|
||||||
}
|
|
||||||
if (!$domain) $domain = $GLOBALS['egw_info']['server']['mail_suffix'];
|
|
||||||
|
|
||||||
$email = str_replace(array('first','last','initial','account','dot','underscore','-'),
|
|
||||||
array($first,$last,substr($first,0,1),$account,$dot,$underscore,''),
|
|
||||||
$GLOBALS['egw_info']['server']['email_address_format'] ? $GLOBALS['egw_info']['server']['email_address_format'] : 'first-dot-last').
|
|
||||||
($domain ? '@'.$domain : '');
|
|
||||||
//echo " = '$email'</p>\n";
|
|
||||||
return $email;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user