11

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

Twoje próby pokonania ułomności The Bat! są jak najbardziej prawidłowe, ale okazuje się, że jest jeszcze lepszy sposób: użycie rozszerzonego zestawu makr z wtyczki XMP, dostępnej do pobrania z tej witryny: http://thebat.pl/download/index.php?ite … p;catid=16

W tym zestawie znajduje się makro wyliczające bezwzględną różnicę czasu np. między dwiema datami. Jego użycie wymagało trochę zabawy z odpowiednim sformatowaniem czasu, ale nareszcie działa (u mnie). Szablon filtru można zatem zmienić na następujący:

%_diff=$%XMP_TimeDiff("%ORcvDate('yyyy-mm-dd')","%ODate('yyyy-mm-dd')")$%-
%IfN:%_diff>=xx:'mid:%SetPattRegexp="<(.*)>"%RegexpMatch="%OMsgID"'

W tym szablonie xx oznacza wartość bezwzględną różnicy dat, a nie jej kwadrat, i taką liczbę tam należy wpisać.

Jest też możliwe zbudowanie na tej bazie dwóch filtrów, które automatycznie wyeksportują wiadomości z różniącymi się datami. Oto gotowy zestaw filtrów do skopiowania i wklejenia:

$$$$ TB! Message Filter $$$$
beginFilter
UID: [DA615404.01CAA4B0.51A42D50.321AA695]
Name: Różnica\20dat\201
Filter: {\0D\0A\20`0`0`@\0D\0A}
UserParam param Date_diff value %QT(Dates_diff)
IsContinue
IsActive
Ignore
endFilter
1
beginFilter
UID: [4734A5EA.01CAA4B3.191656EB.19A1629C]
Name: Eksport
Filter: {\0D\0A\20`27`Date_diff`0`1\0D\0A}
ExportMessage FmtUnix filename E:\5Clista.txt filenamerelative %EXEDRIVE%\5Clista.txt
IsContinue
IsActive
Ignore
endFilter

Pierwszy filtr korzysta z szablonu podręcznego o identyfikatorze Dates_diff i zawartości takiej jak niżej:

%_diff=$%XMP_TimeDiff("%ORcvDate('yyyy-mm-dd')","%ODate('yyyy-mm-dd')")$%-
%_diff2='%Calc="%_df*%_df"'%-
%IfN:%_diff>=xx:1:0

W wyniku otrzymujesz plik tekstowy E:\lista.txt z wyeksportowanymi wiadomościami. Nazwę i miejsce tworzenia pliku możesz oczywiście zmienić. Wartość xx w szablonie to minimalna różnica w dniach dla daty odbioru i utworzenia wiadomości - musisz ją wpisać zgodnie ze swoim życzeniem.

12

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

O, to wygląda idealnie!
Tylko znowu mam pewien problem z wykorzystaniem choćby pierwszego filtra. Gdy wklejam pierwszy zaproponowany przez Ciebie szablon i ustawiam w nim wartość 20, to nadal wynajdywanych jest 10 z 15 wiadomości. Roszerzenie doinstalwoalem wgrywajac pliki do katalogu bata i dodając wtyczkę przez odpowiednie okno w programie, więc to chyba zrobiłem dobrze. Zastanawiam się cóż takiego mogłem zrobić nie tak.

13

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

To dziwne, że u Ciebie nie zadziałał ten pierwszy sposób. Sprawdź zatem działanie samego szablonu, zaznaczając daną wiadomość, potem otwierając panel ustawień filtru i edytor szablonu dla Twojego filtru. Na górze okna edytora masz przycisk Podgląd, który otwiera okno z wynikiem działania szablonu na daną wiadomość. Jeśli pojawi się w nim tekst mid:xxxxxxxxx - szablon działa poprawnie (różnica dat dla Twojego przypadku musi dla wybranej wiadomości być większa albo równa 20).

Drugi sposób z zestawem filtrów i eksportem całych wiadomości do pliku jest chyba bardziej efektywny i radzę go wypróbować - u mnie działa na Windows XP i Vista (PL), dla programów The Bat! 4.2.33.1 beta i The Bat! Voyager 4.2.25.

Której wersji programu używasz i na jakim systemie Windows pracujesz?

14 (edytowany przez semp 2010-02-03 22:07:25)

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

Jestem teraz na Viście, a Bat jest 3.0.2.10 (oryginalny, z płytki dołączanej do czasopisma).

Spróbowałem zapuścić ten filtr na pojedynczej wiadomości i rzeczywiście nie zadziałał. Z kolei na innej zadziałał. Z tych 15 testowych wiadomości znowu zadziałał na tych samych 10 co wtedy, a pozostałe 5 pominął. Może jest wrażliwy na coś, co jest w nagłówku jednej z wiadomości, a czego nie ma w innej?

O, znalazłem coś ciekawego, taką różnicę pomiędzy wiadomością identyfikowaną poprawnie, a taką, która jest niewykrywana. Otóż ta wychwytywana prawidłowo ma w nagłówku:

Date: Fri, 13 Apr 2001 02:20:45 +0200

Z kolei ta, która nie jest wykrywana ma nagłówek postaci

Date: Mon Feb 03 18:52:33 CET 2003

Ponadto zrobiłem tak, że wyeksportowałem obie wiadomości na dysk i zaimportowałem je ponownie. Ta nieuszkodzona wyglądała identycznie jak przedtem, a w tej uszkodzonej data zmieniła się na zupełnie inną, choć nic nie zmieniałem w nagłówku. Podejrzewam, że wina leżałą w źle zapisanych nagłówkach. Zamieniłem więc pole date w złej wiadomości tym z dobrej i po zaimportowaniu nie wyświetlała się żadna dziwna data, tylko ta, którą wszczepiłem. Nadal jednak wiadomość nie chciała poddać się filtrowaniu, ale przynajmniej dawała się dobrze eksportować i importować bez utraty informacji o dacie.

Zadanie, które chciałem wykonać za pomocą filtrów już praktycznie ukończyłem ręcznie, sortując wiadomości według received a następnie przewijając je bardzo szybko i patrząc czy w dacie created nagle nie pojawia sie jakiś dziwny rok (tak wiadomości przenosiłem do odrębnego folderu i teraz je wyeksportuje i pozmieniam im daty w formacie unixowym), ale nadal intryguje mnie kwestia tego filtra, bo czuję, że byliśmy naprawdę blisko i magiczne pozostają dla mnie powody nie działania tego.

15

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

The Bat! jest stary i nie wszystko będzie w nim działać, a w szczególności mogą nie działać niektóre makra. Nie dotyczy to jednak makr z wtyczki XMP, w których prawdziwą przyczyną niedziałania dla niektórych wiadomości jest według mnie błędny wpis daty (czyli ów nieszczęsny "Mon Feb 03 18:52:33 CET 2003").

Wykonaj niekłopotliwy test: utwórz prosty szablon podręczny (menu Narzędzia | Szablony podręczne):

Odebrano: %ORcvDate
Utworzono: %ODate

Zaznacz feralną wiadomość i sprawdź w edytorze szablonów podręcznych co się wyświetli w po użyciu przycisku Podgląd. Przekonamy się wówczas jak Twój The Bat! interpretuje taki niepoprawny wpis daty.

P.S. Zapomniałem, że w Twojej wersji chyba nie ma takiego rozszerzonego edytora szablonów. W celu przetestowania tego szablonu zapisz go i następnie spróbuj odpowiedzieć na tę oporną wiadomość. W edytorze wiadomości wpisz identyfikator zachowanego szablonu i zaraz po tym naciśnij kombinację klawiszy Ctrl+Spacja.

16

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

A już chciałem robić zrzut ekranu na dowód, że nie mogę znaleźć opcji podgląd wink
W każdym razie przetestowałem tą drugą metodą i oto co się stało. W przypadku wiadomości z nietypowym formatem "Date" w nagłówku rzeczywiście wyświetla się absurdalna data (1 z pośród 5 złych wiadomości na których robię test). W pozostałych przypadkach data wyświetlana jest w porządku, ale to też dlatego, że tam "Date" jest w normalnym formacie. Tak więc okazuje się, że to jednak nie kwestia tego jak zapisana jest data jest problemem, gdyż pozostałe 4 wiadomości mają tak samo zapisaną datę jak tamte 10, które odczytywane są dobrze. Zastanawiam się gdzie jeszcze można szukać elementów wspólnych i różnic pomiędzy dwoma wiadomościami, aby ustalić dlaczego jedne poddawane są filtracji a inne nie.

17

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

Jeśli nie masz nic tajnego w nagłówkach wiadomości sprawiających kłopoty, wklej je tutaj (wycinając adresy i inne wrażliwe dane). Zobaczymy co w nich dziwnego.

18

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

OK, wklejam dwa przykładowe smile

From XXXXXXX@speed-server.net  Tue Nov 11 09:25:36 2003
Received: from mailic01.gazeta.pl (unverified [193.42.231.60]) 
    by  (imail1.gazeta.pl) with ESMTP id 13295942 
    for <XXXXXXX@poczta.gazeta.pl>; Mon, 10 Nov 2003 18:28:37 +0300
Return-Path: <XXXXXXX@speed-server.net>
Received: from mail.speed-server.net ([217.97.211.13]) by mailic01.gazeta.pl ; Mon, 10 Nov 2003 18:28:37 +0100
Received: from dom (unknown [192.168.0.250])
    by mail.speed-server.net (Postfix) with ESMTP id CE0AEF68CA
    for <XXXXXXX@gazeta.pl>; Mon, 10 Nov 2003 18:29:17 +0000 (UTC)
From: =?iso-8859-2?Q?Kierownik_Ds._Obs=B3ugi_Klienta?= <XXXXXXX@speed-server.net>
To: XXXXXXX@gazeta.pl
Subject: Informacja
Date: Sun, 10 Nov 2002 18:31:12 +0100
Message-ID: <000f01c288de$f7191a90$fa00a8c0@dom>
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_0010_01C288E7.58DD8290"
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.2627
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Importance: Normal
X-DSMTPFooter: true
X-Rcpt-To: <XXXXXXX@poczta.gazeta.pl>
Status: RO
X-UIDL: 1068485318.28614_270344.imail1

------=_NextPart_000_0010_01C288E7.58DD8290
Content-Type: text/plain;
    charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable

[treść pierwszej wiadomości]

From XXXXXXX@go2.pl  Fri Aug 16 17:50:17 2002
Return-Path: <XXXXXXX@go2.pl>
Delivered-To: medianet.pl-XXXXXXX@medianet.pl
Received: (qmail 12602 invoked from network); 12 Aug 2002 19:48:58 -0000
Received: from tom.enternet.com.pl (195.117.152.65)
  by virtual.medianet.pl with SMTP; 12 Aug 2002 19:48:58 -0000
Received: by tom.enternet.com.pl ('IDeal SMTP, v.31337+mlask_patch_666')
    id 8C28D95038; Mon, 12 Aug 2002 21:48:57 +0200 (CEST)
Delivered-To: XXXXXXX@enternet.com.pl
Received: from rekin.go2.pl (smtp.o2.pl [212.126.20.27])
    by tom.enternet.com.pl ('IDeal SMTP, v.31337+mlask_patch_666') with SMTP id 7CF2C94CA3
    for <XXXXXXX@thexfiles.prv.pl>; Mon, 12 Aug 2002 21:48:57 +0200 (CEST)
Received: from XXXXXXX(c6-180.icpnet.pl [62.21.6.180])
    by rekin.go2.pl (Mailer_v2.01) with SMTP id C761B6EEED
    for <XXXXXXX@thexfiles.prv.pl>; Mon, 12 Aug 2002 21:48:55 +0200 (CEST)
Message-ID: <000701c0bd40$543e4ea0$b406153e@XXXXXXX>
From: "Tom Boone" <XXXXXXX@go2.pl>
To: XXXXXXX@thexfiles.prv.pl
Subject: The Reporter
Date: Wed, 4 Apr 2001 21:49:13 +0200
MIME-Version: 1.0
Status: RO
X-UIDL: 1029181738.12605.virtual.medianet.pl
Content-Type: text/plain;
    charset="iso-8859-2"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2919.6600
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600

[treść drugiej wiadomości]

19

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

Nie widzę niczego złego w tych nagłówkach, a na dodatek "u mnie działa". Po imporcie tych wiadomości z pliku mogę je filtrować bez kłopotów. Różnice dat obliczane przez makro %XMP_TimeDiff są poprawne w obydwu przypadkach, działa zarówno pierwsza, jak i druga metoda filtrowania.

Zaczynam podejrzewać, że w Twojej wersji programu może coś działać źle. Spróbuj z nagłówków usunąć wiersze z wpisami Status: RO i Importance: Normal, bo jeśli się nie mylę, niezbyt pasują one do standardu RFC2822.

20

Odp: Jak odszukać wiadomości z inną datą utworzenia niż datą odebrania

Hm, niestety usunięcie tych wierszy z nagłówków również nic nie dało. W takim razie być może to kwestia wersji programu. Bo zakładam, że w ustawianiu filtru nie mogłem się walnąć, skoro wykrywa niektóre wiadomośći (przekleiłem po prostu jak leci, wpisałem przykładową wartość, a jako warunek dałem, żeby każdą wiadomość badał). W każdym razie opisanym wcześniej ręcznym sposobem udało mi się osiągnąć zamierzony cel i choć zagadka tego filtra trafi do archiwum x, to muszę przyznać, że poznawanie niuansów The Bata było ciekawą sprawą. Jeszcze raz dzięki za pomoc!