PHPKonf Istanbul PHP Conference 2019 - Call for Papers

imap_createmailbox

(PHP 4, PHP 5, PHP 7)

imap_createmailboxСоздать новый почтовый ящик

Описание

bool imap_createmailbox ( resource $imap_stream , string $mailbox )

Создает новый почтовый ящик, указанный в mailbox.

Список параметров

imap_stream

Поток IMAP, полученный из imap_open().

mailbox

Имя почтового ящика. Более подробно см. imap_open(). Имена почтовых ящиков, содержащие интернациональные символы должны быть закодированы с помощью imap_utf7_encode().

Внимание

Если imap.enable_insecure_rsh не отключен, то передача в этот параметр не проверенных данных не безопасна.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования imap_createmailbox()

<?php
$mbox 
imap_open("{imap.example.org}""username""password"OP_HALFOPEN)
     or die(
"не получилось подключиться: " imap_last_error());

$name1 "phpnewbox";
$name2 imap_utf7_encode("phpnewböx"); // phpnewb&w7Y-x

$newname $name1;

echo 
"Новым именем будет '$name1'<br />\n";

// теперь создадим новый ящик "phptestbox" в вашем входящем каталоге,
// проверим его статус и удалим, чтобы вернуть ваш каталог к первоначальному
// состоянию

if (@imap_createmailbox($mboximap_utf7_encode("{imap.example.org}INBOX.$newname"))) {
    
$status = @imap_status($mbox"{imap.example.org}INBOX.$newname"SA_ALL);
    if (
$status) {
        echo 
"ваш новый почтовый ящик называется '$name1' и имеет следующий статус:<br />\n";
        echo 
"Сообщений:           " $status->messages    "<br />\n";
        echo 
"Новых:                 " $status->recent      "<br />\n";
        echo 
"Непрочитанных:     " $status->unseen      "<br />\n";
        echo 
"Следующий UID:    " $status->uidnext     "<br />\n";
        echo 
"Корректность UID:" $status->uidvalidity "<br />\n";

        if (
imap_renamemailbox($mbox"{imap.example.org}INBOX.$newname""{imap.example.org}INBOX.$name2")) {
            echo 
"переименуем новый ящик из '$name1' в '$name2'<br />\n";
            
$newname $name2;
        } else {
            echo 
"вызов imap_renamemailbox для нового ящика завершился ошибкой: " imap_last_error() . "<br />\n";
        }
    } else {
        echo 
"вызов imap_status для нового ящика завершился ошибкой: " imap_last_error() . "<br />\n";
    }

    if (@
imap_deletemailbox($mbox"{imap.example.org}INBOX.$newname")) {
        echo 
"новый почтовый ящик удален для восстановления первоначального состояния<br />\n";
    } else {
        echo 
"вызов imap_deletemailbox на новом почтовом ящике завершился ошибкой: " implode("<br />\n"imap_errors()) . "<br />\n";
    }

} else {
    echo 
"невозможно создать новый почтовый ящик: " implode("<br />\n"imap_errors()) . "<br />\n";
}

imap_close($mbox);
?>

Смотрите также

add a note add a note

User Contributed Notes 1 note

up
9
tiznull
9 years ago
One should understand that even though it says "create mailbox", you are really creating a FOLDER. Now, as a imap admin you can create mailboxes and more with this function.

So in reality, you are always creating folders when creating "mailboxes". Mail admin's get this, but programmers may not understand the concept completely.

If you auth a single user account and use these functions, they will not create mailboxes where mail is delivered, they will actually create a folder where you can copy messages to.

Here is a translation:
imap_createmailbox = create a folder in the account for the current authenticated user's imap session (imap_open)
imap_deletemailbox = delete a folder (and the email in it) for the current authenticated user's imap session (imap_open)
imap_getmailboxes = get all your folders for the current authenticated user's imap session (imap_open)
imap_renamemailbox = Rename a folder for the current authenticated user's imap session (imap_open)

================

Here is a quick class to login to an account, generate all of your base folders, and return the connection, success message and returns all the base folders for an imap account using PHP5:

<?php

class Imap {
    public
$folders;
    public
$connection;

    public function
login($user, $pass) {
       
$mbox = @imap_open("{imap.example.org:143}", $user, $pass);
        if(!
$mbox)
            return (
'Your login failed for user <strong>'.$user.'</strong>. Please try to enter your username and password again.<br />');

       
// Login worked, let us begin!!!!....

        // gather folder lost...
       
$fldrs_made = 0;
       
$folders = imap_listmailbox($mbox, "{localhost:143}", "*");
       
// create the default folders....
       
if(1 === mailgui::create_default_folders($mbox,$folders)) {
           
$folders = imap_listmailbox($mbox, "{localhost:143}", "*");
           
$fldrs_made = 1;
        }

       
sort($folders);

       
$this->folders = $folders;
       
$this->connection = $mbox;

        if(
1 === $fldrs_made)
            return (
'User logged in successfully as '.$user.'. This is your first time logging in, welcome to our webmail!!!<br />');
        else
            return (
'User logged in successfully as '.$user.'.<br />');
    }
    private function
create_default_folders($imap_stream, $folders) {
       
$change=0;
        if(!
in_array('{imap.example.org}TRASH',$folders)) {
            @
imap_createmailbox($imap_stream, imap_utf7_encode("{imap.example.org:143}TRASH"));
           
$change=1;
        }
        if(!
in_array('{imap.example.org}SENT',$folders)) {
            @
imap_createmailbox($imap_stream, imap_utf7_encode("{imap.example.org:143}SENT"));
           
$change=1;
        }
        if(!
in_array('{imap.example.org}SPAM',$folders)) {
            @
imap_createmailbox($imap_stream, imap_utf7_encode("{imap.example.org:143}SPAM"));
           
$change=1;
        }
        if(!
in_array('{imap.example.org}SENT',$folders)) {
            @
imap_createmailbox($imap_stream, imap_utf7_encode("{imap.example.org:143}SENT"));
           
$change=1;
        }
        if(!
in_array('{imap.example.org}SENT',$folders)) {
            @
imap_createmailbox($imap_stream, imap_utf7_encode("{imap.example.org:143}DRAFTS"));
           
$change=1;
        }
        if(!
in_array('{imap.example.org}MY_FOLDERS',$folders)) {
            @
imap_createmailbox($imap_stream, imap_utf7_encode("{imap.example.org:143}PERSONAL EMAIL"));
           
$change=1;
        }
        return
$change;
    }
    public function
close_mail_connection() {
        @
imap_close($this->connection);
    }
}

// usage, create a form, post it....
if($_POST['imap_username'] && $_POST['imap_password']) {
   
$imap_login = new Imap();
   
$imap_login->login($_POST['imap_username'],$_POST['imap_password']);
   
   
// Do some mail stuff here, like get headers...., use obj connection
   
$message_headers = imap_mailboxmsginfo($imap_login->connection);
   
   
// show the folders....
   
print_r($imap_login->folders, true);
   
    print
'<br /><hr size="1" noshade />';
   
   
print_r($message_headers, true);
   

   
// close the connection
   
$imap_login->close_mail_connection();
}

?>
To Top