The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Бэн! Это Данила! I need help! (Perl & MIME)"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Бэн! Это Данила! I need help! (Perl & MIME)"
Сообщение от vate.zlo emailИскать по авторуВ закладки on 01-Мрт-04, 14:38  (MSK)
Ну очень сильно нужна помощь!

Задача: Выдрать аттачмент из письма Perl скриптом.

Там аттач в виде здорового такого столбца из символов. И судя по документации эта чтука зашифроффана при помощи

use MIME::Base64;

$text=encode_base64($text);
.....

Предположим, что в аттачменте doc файл и я копирую эту белиберду (Зашифрованный столбец) в файл enc.f
И провожу что то вроде:

$t='';
open(F,"enc.f");
@file=<F>;
open(f2,">dec.doc");
foreach $s (@file) {
chomp($s);
$t.=$s
}
$t=decode_base64($t);
print f2 $t;
close F;
close f2;

Вроде все путем? Да, если открыть исходный док файл и полученный каким-нибудь блокнотом, то они выглядят одинаково, но вот полученный файл чуть-чуть длинее, и вордом не открывается...(17036 байт против 16947 например)

Прошу вашей помощи... Вот. С надеждой...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Бэн! Это Данила! I need help! (Perl & MIME)"
Сообщение от StatusQuo Искать по авторуВ закладки on 02-Мрт-04, 00:32  (MSK)
>$t='';
>open(F,"enc.f");

Здесь я скорее поставил бы такую строку:
open(F,"<enc.f");

>@file=<F>;
>open(f2,">dec.doc");

А в целом твой скрипт у меня работает. То что у тебя происходит напоминает то, что разделитель записей в Юниксе и Виндах - разный. Скорее всего на какой-то стадии это сказывается и добавляются лишние символы. Я бы сделал то попроще:

open(F,"enc.f");
  {
    local $/ = undef; # присваиваем переменной разделителя записей неопределённое значение внутри блока { }
    $file = <F>; # и записываем весь файл в один строковый скаляр
  }

open(f2,">dec.doc");
$t=decode_base64($file);
print f2 $t;
close F;
close f2;

Попробуй как этот вариант работает.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Бэн! Это Данила! I need help! (Perl & MIME)"
Сообщение от ix_adm Искать по авторуВ закладки on 09-Мрт-04, 14:44  (MSK)
>>$t='';
>>open(F,"enc.f");
>
>Здесь я скорее поставил бы такую строку:
>open(F,"<enc.f");
>
>>@file=<F>;
>>open(f2,">dec.doc");
>
>А в целом твой скрипт у меня работает. То что у тебя
>происходит напоминает то, что разделитель записей в Юниксе и Виндах -
>разный. Скорее всего на какой-то стадии это сказывается и добавляются лишние
>символы. Я бы сделал то попроще:
>
>open(F,"enc.f");
>  {
>    local $/ = undef; # присваиваем переменной разделителя
>записей неопределённое значение внутри блока { }
>    $file = <F>; # и записываем весь файл в один строковый скаляр
>  }
>
>open(f2,">dec.doc");
>$t=decode_base64($file);
>print f2 $t;
>close F;
>close f2;
>
>Попробуй как этот вариант работает.

Можно использовать чужой велосипед -- юзать Mail::MboxParser
За год эксплуатации никаких нареканий.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру