imap_setacl
(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
imap_setacl — Sets the ACL for a given mailbox
说明
imap_setacl(
IMAP\Connection
string
string
string
): bool
IMAP\Connection
$imap
,string
$mailbox
,string
$user_id
,string
$rights
): bool
Sets the ACL for a giving mailbox.
参数
-
imap
-
IMAP\Connection 实例。
-
mailbox
-
The mailbox name, see imap_open() for more information
警告Passing untrusted data to this parameter is insecure, unless imap.enable_insecure_rsh is disabled.
-
user_id
-
The user to give the rights to.
-
rights
-
The rights to give to the user. Passing an empty string will delete acl.
返回值
成功时返回 true
, 或者在失败时返回 false
。
更新日志
版本 | 说明 |
---|---|
8.1.0 |
现在 imap 参数接受 IMAP\Connection
实例,之前接受 资源(resource)。
|
注释
This function is currently only available to users of the c-client2000 or greater library.

User Contributed Notes 2 notes
panayotis at yellownetroad dot com ¶
19 years ago
I noticed that using:
imap_setacl ($conn, $mbox, $userid, "")
will act like:
"deleteaclmailbox $mbox $userid" (remove the ACL on mailbox for userid).
hartmut dot woehrle at hwds dot ch ¶
6 years ago
After getting the ACL's from imap_getacl you want to set them for a user on any mailbox folder like this:
foreach ( $Folders as $key => $Maildir ) {
imap_setacl($domains , "user/john.doe/".$Maildir , $userid, "lrswipkxte");
}
You can use a form that translates the ACLs like the following (thanks to cyradm manual):
switch ($right) {
case "read" : $aclstring = "lrs";
break;
case "post" : $aclstring = "lrsp";
break;
case "append" : $aclstring = "lrsip";
break;
case "write" : $aclstring = "lrswipkxte";
break;
case "delete" : $aclstring = "lrxte";
break;
case "all" : $aclstring = "lrswipkxte";
break;
case "admin" : $aclstring = "lrswipkxtea";
break;
case "none" : $aclstring = "";
break;
}