1 (edytowany przez tommek 2007-07-03 10:17:08)

Temat: Import wiadomosci a oznaczenie wiadomosci odpowiedzianych

Po imporcie wiadomosci z innego programu nie mam oznaczonych wiadomosci na ktore zostala juz udzielona odpowiedz. Jezeli jednak klikne prawym klawiszem na takiej wiadomosci i wybore Specjalne -> Wyszukaj odpowiedz to wiadomosc z odpowiedzia jest odnajdywana. Jak zmusic The Bata aby automatycznie oznaczyl, ktore wiadomosci byly odpowiedziane a ktore nie, bazujac na danych z folderu WYSLANE ?

2

Odp: Import wiadomosci a oznaczenie wiadomosci odpowiedzianych

Gdyby zawiodly wszystkie inne sposoby to bym sprobowal jeszcze raz wyexportowac wiadomosci z zrodlowego programu ale korzystajac z innego formatu. Tak z marszu niewiem odpowiedziec ktory format zachowuje najwiecej przenoszonych informacji (moze ktos z kolegow podpowie). A nastepnie importowac do TheBata.
Podanej informacji nietestowalem, jest bez gwarancji :-)

3

Odp: Import wiadomosci a oznaczenie wiadomosci odpowiedzianych

tommek napisał/a:

Jak zmusic The Bata aby automatycznie oznaczyl, ktore wiadomosci byly odpowiedziane a ktore nie, bazujac na danych z folderu WYSLANE ?

Problem jest trudny do rozwiązania, a trudność wynika z faktu, że wiadomości, na które udzielono odpowiedzi, nie zawierają żadnej informacji na ten temat. The Bat! podczas tworzenia odpowiedzi kojarzy odpowiedź z pierwotną wiadomością i zapisuje tę informację w pliku w swojej wewnętrznej bazie danych (prawdopodobnie w pliku messages.tbi). Gdy takiej informacji nie ma (czyli np. po imporcie wiadomości z "obcego" programu), nie jest możliwe automatyczne powiązanie. Filtry ani makra nie potrafią przeszukiwać pliku bazy z wiadomościami, co stwarza dodatkowe utrudnienie. Najczęściej pozostaje zatem do dyspozycji stosowana przez Ciebie metoda ręcznego wyszukiwania odpowiedzi, ale nie jest ona wygodna przy większej liczbie wiadomości.

Spróbowałem zrobić to drogą okrężną i udało mi się odtworzyć powiązania. Metoda jest dwuetapowa i polega na zastosowaniu dwóch uruchamianych ręcznie filtrów. Pierwszym filtrem należy przefiltrować wiadomości w folderze (bądź w folderach), w którym są umieszczone odpowiedzi. Pierwszy filtr ma za zadanie znaleźć te odpowiedzi i zapisać ich identyfikatory w pliku tekstowym. Jako kryterium wyszukiwania odpowiedzi przyjąłem obecność w nagłówku pól In-Reply-To i References. Ten plik posłuży w drugim filtrze jako źródło informacji do skojarzenia odpowiedzi z wiadomościami pierwotnymi. Po stwierdzeniu skojarzenia drugi filtr dołącza do pierwotnej wiadomości notatkę o treści Reply. W ten sposób zostaną oznakowane wszystkie wiadomości, na które odpowiedziano.

Dalej sprawa jest już prosta. Wiedząc, że szukane wiadomości są oznakowane notatką o treści Reply, można je łatwo wyselekcjonować (np. za pomocą odpowiedniego widoku lub dodatkowej zakładki listy wiadomości), pokolorować, ustawić znaczniki itp.

W filtrach zastosowałem kilka makr oraz proste wyrażenia regularne do porównywania zawartości tych pól w nagłówku, które identyfikują odpowiedzi. Pierwszy filtr o nazwie Reply_ID uruchamia się ręcznie za pomocą kombinacji klawiszy Shift+Ctrl+F11. Tworzy on plik Reply_ID.txt na dysku D: (można to zmienić w opcjach filtru, pamiętając o stosownej zmianie w szablonie tworzącym notatkę w drugim filtrze). Oto kod filtru gotowy do wklejenia:

$$$$ TB! Message Filter $$$$
beginFilter
UID: [55E2AD36.01C7BD5E.49B06E61.6C6CAFE9]
Name: Reply_ID
Filter: {\0D\0A\20`7`In-Reply-To`0`@\0D\0A0`7`References`0`@\0D\0A}
ExportMessage FmtText filename D:\5CReply_ID.txt filenamerelative D:\5CReply_ID.txt template %SetPattRegExp\3D\22(?imU)^In\5C-Reply\5C-To\5C:\5Cs\5C<(.*)\5C>\5Cn\22%RegexpMatch(%Headers)%-\0D\0A
IsManual
IsActive
IsHotkey
IsCheckRule
IsHotkeyOnly
IsSendQueue
endFilter

Drugi filtr (uruchamiam go kombinacją Shift+Ctrl+F12) o nazwie Set_Note tworzy notatkę do wiadomości, jeśli była dla niej utworzona odpowiedź. Oto jego kod do wklejenia:

$$$$ TB! Message Filter $$$$
beginFilter
UID: [BDF82B27.01C7BD60.58542E4B.73E4177B]
Name: Set_Note
Filter: {\0D\0A\20`0`0`@\0D\0A}
SetMemo Text %_All_ID\3D\22%Put\3D\27D:\5CReply_ID.txt\27\22%-\0D\0A%_Current_ID\3D\22%SetPattRegExp\3D\27(?imU)^Message\5C-ID\5C:\5Cs\5C<(.*)\5C>\5Cn\27%RegexpMatch(%Headers)\22%-\0D\0A%_Searched_ID\3D\22%SetPattRegExp\3D\27(?imU)^(%_Current_ID)\5Cn\27%RegexpMatch(%_All_ID)\22%-\0D\0A%If:\22%_Searched_ID\22\3D\22%_Current_ID\22%-\0D\0A:\22Reply\22%-\0D\0A:\22\22%-\0D\0A
IsManual
IsActive
IsHotkey
IsCheckRule
IsHotkeyOnly
Ignore
endFilter