最新版本的 Cyrus imapd 将邮箱 ACL 定义如下
c (create)
用户可以创建邮箱的新子邮箱,或删除或重命名当前邮箱。
d (delete)
用户可以存储“已删除”标志并执行清除操作。
这意味着要删除邮箱,您需要通过 imap_open() 连接的用户对邮箱具有“c”权限,才能使 imap_deletemailbox() 工作。为自己设置“d”权限并不相同。
查看您使用的 Cyrus imapd 版本的文档。
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_deletemailbox — 删除邮箱
imap
一个 IMAP\Connection 实例。
mailbox
邮箱名称,有关更多信息,请参见 imap_open()
除非禁用 imap.enable_insecure_rsh,否则将不可信数据传递给此参数是不安全的。
版本 | 描述 |
---|---|
8.1.0 | 现在 imap 参数需要一个 IMAP\Connection 实例;以前,需要一个有效的 imap 资源。 |
mbox
的格式最新版本的 Cyrus imapd 将邮箱 ACL 定义如下
c (create)
用户可以创建邮箱的新子邮箱,或删除或重命名当前邮箱。
d (delete)
用户可以存储“已删除”标志并执行清除操作。
这意味着要删除邮箱,您需要通过 imap_open() 连接的用户对邮箱具有“c”权限,才能使 imap_deletemailbox() 工作。为自己设置“d”权限并不相同。
查看您使用的 Cyrus imapd 版本的文档。
从 IMAP 服务器删除用户帐户时,请不要忘记添加完整的服务器名称和端口。还需要以 IMAP 管理员身份登录并设置 ACL。
这对 Cyrus 有效
<?php
//凭据
$cyrusadmin_username="cyrus";
$cyrusadmin_password="cyruspassword";
$cyrus_serverip="fellowship.ring.net";
//要删除的用户
$username="frodoBaggins";
//打开到 IMAP 服务器(Cyrus)的连接
$mbox=imap_open("{".$serverip.":143}",$cyrusadmin_username, $cyrusadmin_password, OP_HALFOPEN)
or die('IMAP 无法连接,因为 '.imap_last_error());
//设置 ACL - 授予 $cyrusadmin_username 删除邮箱的权限
imap_setacl ($mbox, "user.".$username, $cyrusadmin_username, "lrswipcda")
or die('无法在邮箱上设置 acl');
//删除邮箱
imap_deletemailbox($mbox,"{".$serverip.":143}user.".$username)
or die('无法删除邮箱');
?>