PHP Conference Japan 2024

imap_createmailbox

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

imap_createmailbox建立新的信箱

說明

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

建立由 mailbox 指定的新信箱。

參數

imap

一個 IMAP\Connection 實例。

mailbox

信箱名稱,詳情請參閱 imap_open()。包含國際字元的名稱應該由 imap_utf7_encode() 編碼。

警告

除非停用 imap.enable_insecure_rsh,否則將不受信任的資料傳遞給此參數是*不安全的*。

回傳值

成功時返回 true,失敗時返回 false

更新日誌

版本 說明
8.1.0 imap 參數現在需要一個 IMAP\Connection 實例;以前需要一個有效的 imap 資源

範例

範例 #1 imap_createmailbox() 範例

<?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);
?>

另請參閱

新增筆記

使用者貢獻的筆記 1 則筆記

tiznull
15 年前
您應該理解,即使它說「建立信箱」,您實際上是在建立一個資料夾。現在,身為 IMAP 管理員,您可以使用此函式建立信箱等等。

因此,實際上,您在建立「信箱」時總是在建立資料夾。郵件管理員了解這一點,但程式設計師可能並不完全理解這個概念。

如果您驗證單一使用者帳戶並使用這些函式,它們將不會建立傳遞郵件的信箱,它們實際上會建立一個您可以將訊息複製到的資料夾。

以下是翻譯
imap_createmailbox = 在目前已驗證使用者的 IMAP 工作階段 (imap_open) 的帳戶中建立一個資料夾
imap_deletemailbox = 刪除目前已驗證使用者的 IMAP 工作階段 (imap_open) 的資料夾(及其中的電子郵件)
imap_getmailboxes = 取得目前已驗證使用者的 IMAP 工作階段 (imap_open) 的所有資料夾
imap_renamemailbox = 重新命名目前已驗證使用者的 IMAP 工作階段 (imap_open) 的資料夾

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

這是一個快速類別,用於登入帳戶、產生所有基本資料夾,並使用 PHP5 返回連線、成功訊息以及 IMAP 帳戶的所有基本資料夾

<?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