PHP 8.4.1 Released!

imap_createmailbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_createmailboxLegt ein neues Postfach an

Beschreibung

imap_createmailbox(IMAP\Connection $imap, string $mailbox): bool

Legt ein neues Postfach mit dem Namen mailbox an.

Parameter-Liste

imap

Eine IMAP\Connection-Instanz.

mailbox

Der Name des Postfachs, siehe imap_open() für nähere Informationen. Namen, die nicht-ASCII-Zeichen enthalten, sollten mit imap_utf7_encode() kodiert werden.

Warnung

Die Übergabe von nicht vertrauenswürdigen Daten an diesen Parameter ist unsicher,falls imap.enable_insecure_rsh nicht deaktiviert ist.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.1.0 Der Parameter imap erwartet nun eine IMAP\Connection-Instanz; vorher wurde eine gültige imap-Ressource erwartet.

Beispiele

Beispiel #1 imap_createmailbox()-Beispiel

<?php
$mbox
= imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
or die(
"Kann keine Verbindung aufbauen: " . imap_last_error());

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

$newname = $name1;

echo
"Der neue Name wird '$name1' sein<br />\n";

// Legen wir nun ein neues Postfach "phptestbox" in Ihrem Posteingangsordner an,
// überprüfen seinen Status nach der Erstellung und löschen es schließlich,
// um den Posteingang wieder in den Ausgangszustand zu versetzen.

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
"Ihr neues Postfach '$name1' hat den folgenden Status:<br />\n";
echo
"Nachrichten: " . $status->messages . "<br />\n";
echo
"Neueste: " . $status->recent . "<br />\n";
echo
"Ungelesen: " . $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
"Neues Postfach von '$name1' in '$name2' umbenannt<br />\n";
$newname = $name2;
} else {
echo
"imap_renamemailbox bei neuem Postfach fehlgeschlagen: " . imap_last_error() . "<br />\n";
}
} else {
echo
"imap_status bei neuem Postfach fehlgeschlagen: " . imap_last_error() . "<br />\n";
}

if (@
imap_deletemailbox($mbox, "{imap.example.org}INBOX.$newname")) {
echo
"Neues Postfach gelöscht, um den Ausgangszustand wiederherzustellen<br />\n";
} else {
echo
"imap_deletemailbox bei neuem Postfach fehlgeschlagen: " . implode("<br />\n", imap_errors()) . "<br />\n";
}

} else {
echo
"Konnte kein neues Postfach anlegen: " . implode("<br />\n", imap_errors()) . "<br />\n";
}

imap_close($mbox);
?>

Siehe auch

add a note

User Contributed Notes 1 note

up
13
tiznull
15 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