Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить почту с флажком IMAP, GMAIL 
:(
    Опции темы
evya
Дата 17.10.2010, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 7.3.2009

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



Подскажите как посредством IMAP, необходимо получить письма которые идут с пометкой. применимо к серверу GMAIL

PM MAIL   Вверх
shamber
Дата 17.10.2010, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



evya, каким флажком?
PM MAIL Jabber   Вверх
evya
Дата 18.10.2010, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 7.3.2009

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



письма которые идут с отметкой у гугла это звездочка
PM MAIL   Вверх
shamber
Дата 18.10.2010, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Код

#!/usr/bin/perl -w
  use strict;
  use Net::IMAP::Client;

    my $imap = Net::IMAP::Client->new(

        server => 'imap.gmail.com',
        user   => 'user',
        pass   => 'pass',
        ssl    => 1,   

    ) or die "Could not connect to IMAP server";

    $imap->login or
      die('Login failed: ' . $imap->last_error);

    $imap->select('INBOX');

    my @messages = $imap->search('FLAGGED');


Это сообщение отредактировал(а) shamber - 18.10.2010, 10:12
PM MAIL Jabber   Вверх
evya
Дата 18.10.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 7.3.2009

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



Спасибо,

а как расшифровать потом массив 
@messages

Добавлено через 1 минуту и 22 секунды
точнее выделить оттуда

  1) заголовок
  2) текст письма
  3) атачмент

PM MAIL   Вверх
shamber
Дата 18.10.2010, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



evya, @messages это массив uid писем. Делаете потом запрос по этим uid и получаете что нужно.

Это сообщение отредактировал(а) shamber - 18.10.2010, 10:30
PM MAIL Jabber   Вверх
evya
Дата 18.10.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 7.3.2009

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



shamber,

у тебя есть возможность выслать пример uid запроса и его разбор.


в инете не получается найти рабочего примера
PM MAIL   Вверх
shamber
Дата 18.10.2010, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



evya
Цитата(evya @  18.10.2010,  13:46 Найти цитируемый пост)
в инете не получается найти рабочего примера 

очень плохо искали



PM MAIL Jabber   Вверх
evya
Дата 18.10.2010, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 7.3.2009

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




Я не пойму как мне парсить письма и где мне крутить цикл?

как я понимаю нужно @messages получить uid письма и получать заголовки и тела писем с помощью команд.

как получить эти uid ??? 


В мануале сказано:

Код

    my $summaries = $imap->get_summaries([ @msg_ids ]);

    foreach (@$summaries) {
        print $_->uid, $_->subject, $_->date, $_->rfc822_size;
        print join(', ', @{$_->from}); # etc.
    }




куда мне привязать @messages ???


PM MAIL   Вверх
shamber
Дата 18.10.2010, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Цитата(evya @  18.10.2010,  15:20 Найти цитируемый пост)
 @msg_ids

?

Добавлено @ 15:32
Код

#!/usr/bin/perl -w
use strict;
use Net::IMAP::Client;

 my $imap = Net::IMAP::Client->new(
        server => 'imap.gmail.com',
        user   => 'user',
        pass   => 'pass',
        ssl    => 1,  ) or die "Could not connect to IMAP server";

 $imap->login or die('Login failed: ' . $imap->last_error);
 $imap->select('INBOX');
  my @messages = $imap->search('FLAGGED');
  my $summaries = $imap->get_summaries(@messages);
  foreach (@$summaries) {
        print $_->uid." ", $_->subject." ", $_->date." ", $_->rfc822_size." ";
        print join(', ', @{$_->from}); # etc.
    }


Добавлено через 8 минут и 26 секунд
а по поводу аттачей могу посоветовать использовать get_parts_bodies

Это сообщение отредактировал(а) shamber - 18.10.2010, 15:33
PM MAIL Jabber   Вверх
evya
Дата 18.10.2010, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 7.3.2009

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



спасибо все получилось,


  my $data = $imap->get_rfc822_body($msg_id);
  print $$data; # it's reference to a scalar

Я получил сообщение в переменную $data

а как мне ее пропарсить.

есть же специальные парсеры емайл?


PM MAIL   Вверх
evya
Дата 18.10.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 7.3.2009

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



самое главное как оттуда вытащить аттачи
PM MAIL   Вверх
shamber
Дата 18.10.2010, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



evya, получите структуру сообщения(BODYSTRUCTURE) и вытащите нужные вам части. Читайте описание модуля внимательнее там все есть. На что смотреть я вам тоже показал.

Это сообщение отредактировал(а) shamber - 18.10.2010, 21:21
PM MAIL Jabber   Вверх
evya
Дата 19.10.2010, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 7.3.2009

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




через модуль: Net::IMAP::Client;
Код

my $data = $imap->get_rfc822_body('29396');


Дальше хочу парсировать сообщение, 
Код


$parser = MIME::Parser->new( );
$parser->output_to_core(1);  # не сохраняя на диск

$message=$parser->parse_data($data); 

$num_parts = $message->parts;

for (my $i=0; $i < $num_parts; $i++) {
  my $part         = $message->parts($i);
  my $content_type = $part->mime_type;
  my $body         = $part->as_string;
}




подскажите правильно ли делаю?
как все таки сохранить аттач????
PM MAIL   Вверх
shamber
Дата 19.10.2010, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Цитата(evya @  19.10.2010,  17:48 Найти цитируемый пост)
Дальше хочу парсировать сообщение, 

мне кажется, вы страдаете фигней, вместо того чтобы читать документацию по модулю вы че-то мудрите. Вы хотите чтобы за вас весь код написали?
Если да, если нет.

Алгоритм простой:
1. получили структуру сообщения(Bodystructure)
2. определили число частей (parts) 
3. скачали части через (get_parts_bodies)
4. Декодировали как в указанном примере.
5. Все, что хотите, то и делаете.

Это сообщение отредактировал(а) shamber - 19.10.2010, 21:38
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

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


 




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


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

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