Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите слегка переделать ф-ю для приема почты... 
:(
    Опции темы
Borland_Delphi_6
Дата 13.1.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

Репутация: 2
Всего: 20



Код

$mail = imap_open("{localhost:110/pop3}INBOX", "admin", "123456");
$total = imap_num_recent($mail);

function retrieve_message($mbox, $messageid)
  {

  global $total;
  if ($total == 0) { $f = fopen('log.php', 'a'); fwrite($f, 'no command remaining'); fclose($f); exit; } else { $i = 0; }
  do  {
  $message = array();

  $header = imap_header($mbox, $messageid);
  $structure = imap_fetchstructure($mbox, $messageid);

  $message['subject'] = $header->subject;
  $message['fromaddress'] =  $header->fromaddress;
  $message['toaddress'] =  $header->toaddress;
  $message['ccaddress'] =  $header->ccaddress;
  $message['date'] =  $header->date;

 $message['body'] = imap_body($mbox, $messageid);
 $i++;
 //imap_delete($mail, $i);
 } while ($i != $total);
 return $message;
 }


Это наброски. Сама функция работает нормально (вернее, ее прежний вариант), если в мыльнике есть только одно письмо. Мне же нужно реализовать следущее:
Читается первое письмо, выдается результат в $message, письмо помечается для удаления, переходим ко второму письму и т.д. Я с циклами мягко говоря не очень smile


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
Mont
Дата 14.1.2005, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Vingrad developer
Сообщений: 274
Регистрация: 13.11.2004
Где: Altay

Репутация: 8
Всего: 12



ИМХО так у тебя функция вернет только одно значение для сообщение с номером $messageid.
А что бы получать их все надо цикл вынести из функции. Т.е. в цикле вызывать эту функцию, после ее выполнения помечать на удаление, а после цикла удалить помеченные.

Сорри, код написать времени нет. Может позже напишу.


--------------------
"Если однажды Вдруг
Меня не окажется вовсе
в заповедной заветной тарелке
Твоего праведного сновидения
Знай - Неуловимые мстители настигли меня."
© Егор Летов
PM MAIL ICQ   Вверх
Opik
Дата 14.1.2005, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Код
function retrieve_message($mbox, $messageid)
 {
    global $total;
    $message = array();
    $i = 0;
    while ($i != $total){;
         $header = imap_header($mbox, $messageid);
         $structure = imap_fetchstructure($mbox, $messageid);
         $message['subject'] = $header->subject;
         $message['fromaddress'] =  $header->fromaddress;
         $message['toaddress'] =  $header->toaddress;
         $message['ccaddress'] =  $header->ccaddress;
         $message['date'] =  $header->date;
         $message['body'] = imap_body($mbox, $messageid);
         imap_delete($mbox, $messageid);
       $i++;
    }
    return $message;
}

Вроде так, но с imap не работал, не уверен, но цикл правильый.

Это сообщение отредактировал(а) Opr - 14.1.2005, 07:45
PM MAIL Skype   Вверх
Mont
Дата 14.1.2005, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Vingrad developer
Сообщений: 274
Регистрация: 13.11.2004
Где: Altay

Репутация: 8
Всего: 12



Opr, цикл, правильный, но там ИМХО сама суть не верна...
передается в функцию id конкретного сообщения, поэтому смысл крутить этот цикл...
Вот если сделать так:
Код

function retrieve_message($mbox)
 {
    global $total;
    $message = array();
    $i = 0;
    while ($i != $total){;
         $header = imap_header($mbox, $i);
         $structure = imap_fetchstructure($mbox, $i);
         $message['subject'] = $header->subject;
         $message['fromaddress'] =  $header->fromaddress;
         $message['toaddress'] =  $header->toaddress;
         $message['ccaddress'] =  $header->ccaddress;
         $message['date'] =  $header->date;
         $message['body'] = imap_body($mbox, $i);
         imap_delete($mbox, $messageid);
       $i++;
    }
    return $message;
}

тогда будет по всем вертеть, но вернет в $message только последнее сообщение...


--------------------
"Если однажды Вдруг
Меня не окажется вовсе
в заповедной заветной тарелке
Твоего праведного сновидения
Знай - Неуловимые мстители настигли меня."
© Егор Летов
PM MAIL ICQ   Вверх
Opik
Дата 14.1.2005, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Да, терь понял
но вот так, уж точно вернет весь список smile
Код
function retrieve_message($mbox)
{
   global $total;
   $message = array();
   $i = 0;
   while ($i != $total){;
        $header = imap_header($mbox, $i);
        $structure = imap_fetchstructure($mbox, $i);
        $message['subject'] [$i]= $header->subject;
        $message['fromaddress'][$i] =  $header->fromaddress;
        $message['toaddress'][$i] =  $header->toaddress;
        $message['ccaddress'][$i] =  $header->ccaddress;
        $message['date'][$i] =  $header->date;
        $message['body'][$i] = imap_body($mbox, $i);
        imap_delete($mbox, $messageid);
      $i++;
   }
   return $message;
}


Это сообщение отредактировал(а) Opr - 14.1.2005, 14:51
PM MAIL Skype   Вверх
Mont
Дата 14.1.2005, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Vingrad developer
Сообщений: 274
Регистрация: 13.11.2004
Где: Altay

Репутация: 8
Всего: 12



Opr smile
согласен полностьюsmile


--------------------
"Если однажды Вдруг
Меня не окажется вовсе
в заповедной заветной тарелке
Твоего праведного сновидения
Знай - Неуловимые мстители настигли меня."
© Егор Летов
PM MAIL ICQ   Вверх
Borland_Delphi_6
Дата 14.1.2005, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

Репутация: 2
Всего: 20



Так не работает. А вот если $i++ поставить выше, то все ок! Спасибо, по плюсику каждому ;)


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
Mont
Дата 14.1.2005, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Vingrad developer
Сообщений: 274
Регистрация: 13.11.2004
Где: Altay

Репутация: 8
Всего: 12



Код

imap_delete($mbox, $i);

вот еще что!
только что заметил smile


--------------------
"Если однажды Вдруг
Меня не окажется вовсе
в заповедной заветной тарелке
Твоего праведного сновидения
Знай - Неуловимые мстители настигли меня."
© Егор Летов
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.