Obsługa MIME w Pegasus Mail

W standardowej dystrybucji PMAILa powinny znajdować się następujące pliki: basic.r, enhanced.r, pm-char.r, pm-lmtt.r, pm-menu.r, pm-mime.r, remail.r, reminder.r, rquotes.r, tphone.r, defines.rh, forms.rh, rescom.exe (nas interesować będą jedynie: rescom.exe, *.rh oraz pm-lmtt.r, pm-char.r i pm-mime.r).

PMAIL może wysyłać listy w jednym z dwu trybów: MIME i standardowym (nie-MIME). Wyboru trybu dokonuje sie naciskając klawisz F9 i wpisując Y w polu "MIME features?".

Ponieważ, w trybie standardowym nie są dopuszczane znaki o kodach powyżej 128 muszą być one przekodowane. Do przekodowywania wychodzących listów "nie-MIME" używana jest tabela znaków (smtp_table) zawarta w pliku pm-char.r: umieszczone są tam po kolei wszystkie znaki o kodach większych niż 127, zaraz obok 7 bitowy odpowiednik (jeden lub więcej znaków). Wszystko oczywiscie dla używanej tabeli znakow! Znakiem oddzielającym poszczegolne pary jest odstęp (ascii 32). Na przykład tak:

...<a_z_ogonkiem>a<space>...
albo
...<a_z_ogonkiem>a,<space>...
lub
...<a_z_ogonkiem>/a<space>
W pierwszym przypadku nastąpi zamiana wszystkich znaków narodowych najbliższym odpowiednikiem ASCII, w drugim przypadku kombinacja znaków "najbardziej podobna" w trzecim korzystamy z notacji "ciachowej".

Pozostałe dwie tabele (ps_banner i ps_header) mogą być wykorzystane do odpowiedniego skonfigurowania drukarki postscriptowej. (Nie mam, nie probowałem).

Do wysyłania/odczytu poczty MIME używane są tablice zawarte w pliku pm-lmtt.r. Dla każdego standardu ISO-8859-X trzeba przygotować odpowiednią tabelę. W tym celu będą jeszcze potrzebne tabele znaków w obu systemach kodowania (oczywiscie tabele obejmują znaki o kodach większych od 127). I rozpoczynamy pracowite przekodowywanie (tu przykłady iso-88592<->cp852): w pozycji odpowiadającej literze "latin capital letter a with ogonek" umieszczamy znak o kodzie 164; w pozycji 162 (breve) umieszczamy znak o kodzie 244, itd.

Wszystkie znaki o kodach większych od 128 będą zamieniane przez PMAIL (zgodnie z tą tabelą) na ISO-8859-2, a następnie żeby przesłać zamieniane na specjalną postać: litera małe a z ogonkiem (kod b1 szesnastkowo, 161 dziesiętnie) zostanie zapisana jako =B1, znak = zostanie zamieniony na =3D. Dodatkowo wiersze dłuższe niz 74 znaki zostaną złamane (miejsce złamania zaznaczone będzie znakiem = na końcu wiersza.

Wreszcie możemy zająć się plikiem o nazwie pm-mime.r. Cechą charakterystyczną wiadomości MIME są nagłówki zawierające informacje o zawartości zbioru i o sposobie kodowania. Szczegóły podaje rfc1341. W pliku pm-mime padajemy programowi PMAIL jakich narzędzi ma użyć do "przeglądania" kodowanych wiadomości.

I tak na przykład do przeglądania obrazków (Content-Type: image/gif) używam dostępnego w pakiecie NC programu bitmap, do przeglądania plikow "zzipowanych" (Content-Type: application/zip) programu shez. (Zero w pierwszej kolumnie tabeli w tym pliku informuje, że użytkownik zostanie zapytany czy chce wiadomość obejrzeć za pomocą odpowiedniego narzędzia (po rozkodowaniu), zapisać do pliku, czy tez rozkodować i mimo wszystko obejrzeć za pomocą PMAILa); jedynka mowi ze nie będzie pytany - zostanie użyte zadeklarowane narzędzie do "obejrzenia" wiadomości.

Na koniec kompilujemy pliki o rozszerzeniu .r za pomocą programu rescom i wynik kompilacji (*.res) kopiujemy do kartoteki PMAILa, a w pliku pmail.ini wpisujemy w linii: Default MIME character set iso-8859-2. (Uwaga, linijka ta może powtórzyć się dwukrotnie). Wszystkie pliki, o ktorych tu pisałem (w wersji w jakiej ja ich używam) zostały umieszczone jako ftp://ftp.immt.pwr.wroc.pl/pub/mime/pm_mime.zip.


Wojciech Myszka, W.Myszka@immt.pwr.wroc.pl