Date: 05/15/01
- Next message: Mark Crispin: "[PHP-DEV] re: Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Previous message: nkpark <email protected>: "[PHP-DEV] Bug #10866 Updated: PHP config problem with IBM AIX 4.3 and oracle 8.1.6"
- Next in thread: Mark Crispin: "[PHP-DEV] re: Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Reply: Mark Crispin: "[PHP-DEV] re: Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Reply: Vlad Krupin: "Re: [PHP-DEV] Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Mark,
I was doing some php coding the other day and did something simular as,
The following code should echo out the Unique ID's generated by UIDL on the
IMAP/POP Server, but echo's out a sequencial number starting with 1
instead... It should probably produce ID's like, 3afffb5300000001,
3afffb5300000002, etc. etc.
$mbox = imap_open ("{your.pop3.host:143}", "username", "password");
$headers = imap_headers ($mbox);
if ($headers == true) {
while (list ($key,$val) = each ($headers)) {
echo imap_uid($mbox, $key);
}
} else {
echo "No messages in inbox";
}
Since this was producing a sequencual number ("1,2,3,4,5"), same as the
message number, I though there was a bug in php, so I checked the
ext/imap/php_imap.c and found the following code,
/* {{{ proto int imap_uid(int stream_id, int msg_no)
Get the unique message id associated with a standard sequential message
number */
PHP_FUNCTION(imap_uid)
{
zval **streamind, **msgno;
int ind, ind_type, msgindex;
pils *imap_le_struct;
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &streamind,
&msgno) == FAILURE) {
ZEND_WRONG_PARAM_COUNT();
}
convert_to_long_ex(streamind);
convert_to_long_ex(msgno);
ind = Z_LVAL_PP(streamind);
imap_le_struct = (pils *) zend_list_find(ind, &ind_type);
if (!imap_le_struct || !IS_STREAM(ind_type)) {
php_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
msgindex = Z_LVAL_PP(msgno);
if ((msgindex < 1) || ((unsigned) msgindex >
imap_le_struct->imap_stream->nmsgs)) {
php_error(E_WARNING, "Bad message number");
RETURN_FALSE;
}
RETURN_LONG(mail_uid(imap_le_struct->imap_stream,
Z_LVAL_PP(msgno)));
}
/* }}} */
When reading this code, it still baffles me that I don't get the correct
UID's, the UIDL produces, I came to the fact that it must be the c-client..
The bug seems to be in src/c-client/mail.h line 1364 ... mail_uid returns an
unsigned long
// Mattias
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe <email protected> For additional commands, e-mail: php-dev-help <email protected> To contact the list administrators, e-mail: php-list-admin <email protected>
- Next message: Mark Crispin: "[PHP-DEV] re: Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Previous message: nkpark <email protected>: "[PHP-DEV] Bug #10866 Updated: PHP config problem with IBM AIX 4.3 and oracle 8.1.6"
- Next in thread: Mark Crispin: "[PHP-DEV] re: Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Reply: Mark Crispin: "[PHP-DEV] re: Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Reply: Vlad Krupin: "Re: [PHP-DEV] Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

