应该理解,即使它说“创建邮箱”,实际上你创建的是一个文件夹。现在,作为 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 ('您的登录失败,用户 <strong>'.$user.'</strong>。请尝试再次输入您的用户名和密码。<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.'. 这是您第一次登录,欢迎使用我们的网络邮件!<br />');
else
return ('用户已成功登录为 '.$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();
}
?>