imap_deletemailbox

(PHP 3, PHP 4, PHP 5)

imap_deletemailbox -- Delete a mailbox

Description

bool imap_deletemailbox ( resource imap_stream, string mbox )

imap_deletemailbox() deletes the specified mailbox (see imap_open() for the format of mbox names).

如果成功则返回 TRUE,失败则返回 FALSE。.

See also imap_createmailbox(), imap_renamemailbox(), and imap_open() for the format of mbox.


add a note add a note User Contributed Notes
sanin at kset dot org
10-Oct-2006 11:27
When deleting user account(s) from IMAP server don't forget to put full server name and port. Also need to be logged as IMAP admin and set ACL.
This worked for Cyrus:

<?php
//Credentials
$cyrusadmin_username="cyrus";
$cyrusadmin_password="cyruspassword";
$cyrus_serverip="fellowship.ring.net";

//User to delete
$username="frodoBaggins";

//Open the connection to IMAP server (Cyrus)
  
$mbox=imap_open("{".$serverip.":143}",$cyrusadmin_username, $cyrusadmin_password, OP_HALFOPEN)
           or die(
'IMAP Could not connect because '.imap_last_error());
//Set ACL - Give rights to $cyrusadmin_username to delete mailbox
  
imap_setacl ($mbox, "user.".$username, $cyrusadmin_username, "lrswipcda")
           or die(
'Could not setacl on mailbox');
//Delete mailbox
  
imap_deletemailbox($mbox,"{".$serverip.":143}user.".$username)
           or die(
'Could not delete mailbox');
?>
kenstumpf<a>hotmail.com
09-Jan-2004 04:10
Recent versions of the Cyrus imapd define mailbox ACLs as follows:

c (create)
The user may create new sub-mailboxes of the mailbox, or delete or rename the current mailbox.

d (delete)
The user may store the "Deleted" flag, and perform expunges.

This means to delete a mailbox, you will need to give the user you are connecting with via imap_open() "c" rights on the mailbox in order for imap_deletemailbox() to work.  Setting "d" rights for yourself is not the same.

Check the documentation for your version of Cyrus imapd.
logan at php dot net
10-May-2002 06:01
setting acl is possible and must be done before deleting a mailbox
chabotc at reviewboard dot com
10-Sep-2001 12:37
the Cyrus imap server requires you to first do a 'setaclmailbox <mail_box> <admin_userid> d' before a deletemailbox call is successfull.

The imap-client doesnt have these ACL functions, so this would have to be done thru a 'raw' (socket) cyrus imap connection.

As far as i know, this does work out-of-the-box with wu-imapd servers.