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();
}
?>imap_createmailbox
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
imap_createmailbox
Референца за `function.imap-createmailbox.php` со подобрена типографија и навигација.
imap_createmailbox
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_createmailbox — Create a new mailbox
= NULL
Креирај нов сандаче mailbox.
Параметри
-
imap Еден IMAP\Connection instance.
mailbox-
Креира нов сандаче специфициран од imap_open() Име на сандачето, види imap_utf7_encode()
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјаваПроследувањето на недоверливи податоци на овој параметар е insecure, освен ако imap.enable_insecure_rsh е оневозможено.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.1.0 |
На imap параметарот очекува IMAP\Connection
инстанца сега; претходно, валидна imap resource се очекуваше.
|
Примери
Пример #1 imap_createmailbox() example
<?php
$mbox = imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
or die("can't connect: " . imap_last_error());
$name1 = "phpnewbox";
$name2 = imap_utf7_encode("phpnewböx"); // phpnewb&w7Y-x
$newname = $name1;
echo "Newname will be '$name1'<br />\n";
// we will now create a new mailbox "phptestbox" in your inbox folder,
// check its status after creation and finally remove it to restore
// your inbox to its initial state
if (@imap_createmailbox($mbox, imap_utf7_encode("{imap.example.org}INBOX.$newname"))) {
$status = @imap_status($mbox, "{imap.example.org}INBOX.$newname", SA_ALL);
if ($status) {
echo "your new mailbox '$name1' has the following status:<br />\n";
echo "Messages: " . $status->messages . "<br />\n";
echo "Recent: " . $status->recent . "<br />\n";
echo "Unseen: " . $status->unseen . "<br />\n";
echo "UIDnext: " . $status->uidnext . "<br />\n";
echo "UIDvalidity:" . $status->uidvalidity . "<br />\n";
if (imap_renamemailbox($mbox, "{imap.example.org}INBOX.$newname", "{imap.example.org}INBOX.$name2")) {
echo "renamed new mailbox from '$name1' to '$name2'<br />\n";
$newname = $name2;
} else {
echo "imap_renamemailbox on new mailbox failed: " . imap_last_error() . "<br />\n";
}
} else {
echo "imap_status on new mailbox failed: " . imap_last_error() . "<br />\n";
}
if (@imap_deletemailbox($mbox, "{imap.example.org}INBOX.$newname")) {
echo "new mailbox removed to restore initial state<br />\n";
} else {
echo "imap_deletemailbox on new mailbox failed: " . implode("<br />\n", imap_errors()) . "<br />\n";
}
} else {
echo "could not create new mailbox: " . implode("<br />\n", imap_errors()) . "<br />\n";
}
imap_close($mbox);
?>Види Исто така
- imap_renamemailbox() за повеќе информации. Имињата што содржат меѓународни знаци треба да бидат кодирани од
- imap_deletemailbox() - Избриши пошта