您應該理解,即使它說「建立信箱」,您實際上是在建立一個資料夾。現在,身為 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 />');
$fldrs_made = 0;
$folders = imap_listmailbox($mbox, "{localhost:143}", "*");
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);
}
}
if($_POST['imap_username'] && $_POST['imap_password']) {
$imap_login = new Imap();
$imap_login->login($_POST['imap_username'],$_POST['imap_password']);
$message_headers = imap_mailboxmsginfo($imap_login->connection);
print_r($imap_login->folders, true);
print '<br /><hr size="1" noshade />';
print_r($message_headers, true);
$imap_login->close_mail_connection();
}
?>