use
echo mb_convert_encoding($val, "utf-8", "UTF7-IMAP");
for cyrrilic folder names
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_list — Leer la lista de buzones
$imap_stream
, string $ref
, string $pattern
): arrayLeer la lista de buzones.
imap_stream
IMAP stream devuelto por imap_open().
ref
ref
normalmente debería ser la especificación
del servidor como está descrita en imap_open().
pattern
Especifica donde en la jerarquía del buzón para empezar a buscar.
Hay dos caracteres especiales que se pueden
pasar como parte del pattern
:
'*
' y '%
'.
'*
' significa devolver todos los buzones. Si se pasa el
pattern
como '*
', se obtendrá
una lista de toda la jerarquía del buzón.
'%
'
significa devolver sólo el nivel actual.
'%
' como el parámetro pattern
devolverá solamente el nivel superior de los
buzones; '~/mail/%
' en UW_IMAPD
devolverá cada buzón en el directorio ~/mail, pero no en los subdirectorios de ese directorio.
Devuelve un array que contiene los nombres de los buzones.
Ejemplo #1 Ejemplo de imap_list()
<?php
$mbox = imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
or die("no se puede conectar: " . imap_last_error());
$list = imap_list($mbox, "{imap.example.org}", "*");
if (is_array($list)) {
foreach ($list as $val) {
echo imap_utf7_decode($val) . "\n";
}
} else {
echo "imap_list failed: " . imap_last_error() . "\n";
}
imap_close($mbox);
?>
use
echo mb_convert_encoding($val, "utf-8", "UTF7-IMAP");
for cyrrilic folder names
Please be aware that if you are trying to list an empty mailbox, imap_list will return FALSE as if there was an error instead of an empty array() as one may expect.
Example:
With a brand new account created on your mail server, with an empty INBOX, you will get:
$list = imap_list( $imap_stream, $ref, "INBOX/*");
var_dump( $list );
// bool(false)
imap_list returns a simple array of strings that look just like the $ref parameter one needs to specify:
<?php
$srv = '{imap.example.com}';
$conn = imap_open($srv, 'me', 'mypass');
$boxes = imap_list($conn, $srv, '*');
print_r($boxes);
imap_close($conn);
?>
Output:
<pre>
Array
(
[0] => {imap.example.com}Calendar
[1] => {imap.example.com}Contacts
[2] => {imap.example.com}Deleted Items
[3] => {imap.example.com}Drafts
[4] => {imap.example.com}Journal
[5] => {imap.example.com}Junk E-mail
[6] => {imap.example.com}Notes
[7] => {imap.example.com}Outbox
[8] => {imap.example.com}RSS Feeds
[9] => {imap.example.com}Sent Items
[10] => {imap.example.com}Tasks
)
</pre>
These directly fill in the $ref argument for every function that takes one.
With the values returned from the imap_list function, you can search a message in the folder, but you have to use the imap_reopen function before . Continuing the previous example (from c6h1206free at gmail dot com )
<?php
$srv = '{imap.example.com}';
$conn = imap_open($srv, 'me', 'mypass');
$boxes = imap_list($conn, $srv, '*');
foreach($boxes as $box)
{
imap_reopen($srv, $box);
var_dump(imap_search($srv, "ALL"));
}
imap_close($conn);
?>
if there is an error imap_list returns FALSE not an empty array (as expected by docs)