I figure other people may benefit from an explanation of the resulting array, My understanding is:
Key: Essentially a node ID
Num: The mail ID (where 0 indicates the start of a conversation)
Next: The node ID of the first child (where 0 indicates there are no children)
Branch: The node ID of the next sibling (where 0 indicates there is no sibling)
imap_thread
(PHP 4 >= 4.0.7, PHP 5)
imap_thread — Returns a tree of threaded message
Description
array imap_thread
( resource $imap_stream
[, int $options = SE_FREE
] )
Gets a tree of a threaded message.
Return Values
imap_thread() returns an associative array containing a tree of messages threaded by REFERENCES, or FALSE on error.
Every message in the current mailbox will be represented by three entries in the resulting array:
$thread["XX.num"] - current message number
$thread["XX.next"]
$thread["XX.branch"]
Examples
Example #1 imap_thread() Example
<?php
// Here we're outputting the threads of a newsgroup, in HTML
$nntp = imap_open('{news.example.com:119/nntp}some.newsgroup', '', '');
$threads = imap_thread($nntp);
foreach ($threads as $key => $val) {
$tree = explode('.', $key);
if ($tree[1] == 'num') {
$header = imap_headerinfo($nntp, $val);
echo "<ul>\n\t<li>" . $header->fromaddress . "\n";
} elseif ($tree[1] == 'branch') {
echo "\t</li>\n</ul>\n";
}
}
imap_close($nntp);
?>
imap_thread
whamill at google mail
26-Apr-2010 11:23
26-Apr-2010 11:23
mail at moritz-lapp dot de
05-Aug-2004 10:47
05-Aug-2004 10:47
One possible option to imap_thread is the constant SE_UID, which will make imap_thread return UIDs instead of sequence numbers in the x.num-fields of the returned array.
