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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MIME::Parser, вложения из письма 
:(
    Опции темы
evya
Дата 24.2.2011, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пожалуйста помогите
есть письмо полученное в $MSG


Пожалуйста помогите извлечь файлы находящиеся в аттаче и сохранить их в папку.


никак не могу достичь результата:

Код

$parser = MIME::Parser->new();
$parser->output_to_core(1);

$message  = $parser->parse_data($MSG) || die "parser dont can?!";    #

$num_parts = $message->parts;

for (my $i=0; $i < $num_parts; $i++) {
my $part = $message->parts($i);
   #$filename = $part->path;
  
 #как узнать ИМЯ ФАЙЛА, и как дальше его сохранить в папку для дальнейшей обработки?!!!

  my $fh = $part->open("r") or die "Can't open for reading: $!\n";
  
while (<$fh>) {
        # Выводим файл.
                        }
}


ПОчему при выводе фалйа просто выводится "HASH"

Это сообщение отредактировал(а) evya - 24.2.2011, 21:40
PM MAIL   Вверх
vivu
Дата 24.2.2011, 22:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попробуйте метод output_under() он вам сразу разберёт ваш файл на кусочки и сложит как положено

Код

#!/usr/bin/perl

use strict;
use MIME::Parser;

open FL, "mail" or die "Can't open file";

my $MSG = "";
while (<FL>) {
    $MSG .= $_;
}

close FL;

my $parser = MIME::Parser->new();
$parser->output_under("./tmp");

$parser->parse_data($MSG) || die "parser dont can?!";

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


Опытный
**


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

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



создаются папки типа msg-1298654016-5688-0

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


Эксперт
***


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

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



я для разбора аттача использовал такой код
Код

sub DumpAll{
    my $self = shift;
    my $entity = shift;
    my $IO;
    my @parts = $entity->parts;
    if (@parts) {                     # multipart...
    my $i;
    foreach $i (0 .. $#parts) {       # dump each part...
        $self->DumpAll($parts[$i]);
    }
    }
    else {                            # single part...    
    # Get MIME type, and display accordingly...
    my ($type, $subtype) = split('/', $entity->head->mime_type);
    my $body = $entity->bodyhandle;
    if ($type =~ /^(text|message)$/ and $subtype ne 'xml') {     # text: display it...
        if ($IO = $body->open("r")) {
        $self->{message} .= $_ while (defined($_ = $IO->getline));
        $IO->close;
        }
        else {       # d'oh!
        print "$0: couldn't find/open : $!";
        }
    }elsif ($type =~ /^(application|text)/ or $subtype =~ /xml/i){
        if (defined $entity->head->recommended_filename){
        if($entity->head->recommended_filename =~/.xml$/i){
            $self->{count}++;
            $self->{'xml'}->{$self->{count}}= $body->path;
        }
        
        }
        }
    }


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


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

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


 




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


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

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