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";

// 我们将在你的收件箱文件夹中创建一个新的邮箱 "phptestbox",
// 创建后检查其状态,最后将其删除以恢复
// 收件箱到其初始状态

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
"你的新邮箱 '$name1' 有以下状态:<br />\n";
echo
"消息: " . $status->messages . "<br />\n";
echo
"最近: " . $status->recent . "<br />\n";
echo
"未读: " . $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
"将新邮箱从 '$name1' 重命名为 '$name2'<br />\n";
$newname = $name2;
} else {
echo
"imap_renamemailbox 对新邮箱操作失败: " . imap_last_error() . "<br />\n";
}
} else {
echo
"imap_status 对新邮箱操作失败: " . imap_last_error() . "<br />\n";
}

if (@
imap_deletemailbox($mbox, "{imap.example.org}INBOX.$newname")) {
echo
"已删除新邮箱以恢复初始状态<br />\n";
} else {
echo
"imap_deletemailbox 对新邮箱操作失败: " . implode("<br />\n", imap_errors()) . "<br />\n";
}

} else {
echo
"无法创建新邮箱: " . implode("<br />\n", imap_errors()) . "<br />\n";
}

imap_close($mbox);
?>

参见

添加笔记

用户贡献的笔记 1 条笔记

13
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 (
'您的登录失败,用户名为 <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']);

// 在这里做一些邮件操作,比如获取标题....,使用 obj 连接
$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();
}

?>
To Top