2011-05-04 10 views
6

proste pytanie: Chcę przenieść wiadomości e-mail z określonym tematem do folderu i oznaczyć je jako przeczytane później. Przenoszenie działa dla mnie przy użyciu Procmail: Przejdź do folderu i oznacz jako przeczytane

:0: H 
* ^Subject:.*(ThisIsMySubject) 
$HOME/mail/ThisIsMyFolder 
Ale jak oznaczyć maile jako przeczytane?

+0

Zależy od MUA. Niektóre oznacz jako przeczytane przez dodanie nagłówka, niektóre kodują je w nazwie pliku (jeśli używasz maildir, spróbuj dodać "," na końcu nazwy pliku ... Myślę, że to było przecinek), inni mają sekret indeks gdzieś, co jest trudno dostępne spoza MUA. – tripleee

Odpowiedz

11

Uwaga: Zaktualizowano dec. 16-te 2011

rozwiązanie Procmail

Poniższy przepis działa na mnie. .Junk to folder spam:

rozwiązanie
MAILDIR=$HOME/Maildir 
:0 
* ^X-Spam-Flag: YES 
{ 
    # First deliver to maildir so LASTFOLDER gets set 
    :0 c 
    .Junk 

    # Manipulate the filename 
    :0 ai 
    * LASTFOLDER ??()\/[^/]+^^ 
    |mv "$LASTFOLDER" "$MAILDIR/.Junk/cur/$MATCH:2,S" 
} 

maildrop

Wstęp: Ostatnio miałem (nie chciałem), aby zrobić to samo z maildropfilter. Po przeczytaniu man maildropfilter wymyśliłem następujący przepis. Jestem pewna, że ​​ludzie to przydadzą - wiem, że to robię.

Poniższy przykład oznacza nowe wiadomości e-mail jako przeczytane, ale także nieprzeczytane stare wiadomości.

SPAMDIRFULL="$DEFAULT/.Junk" 

if (/^X-Spam-Flag: YES$/ || \ 
    /^X-Spam-Level: \*\*\*/ || \ 
    /^Subject: \*+SPAM\*/) 
{ 
    exception { 
    cc "$SPAMDIRFULL" 
    `for x in ${SPAMDIRFULL}/new/*; do [ -f $x ] && mv $x ${SPAMDIRFULL}/cur/${x##*/}:2,S; done` 
    `for x in ${SPAMDIRFULL}/cur/*:2,; do [ -f $x ] && mv $x ${SPAMDIRFULL}/cur/${x##*/}S; done` 
    to "/dev/null" 
    } 
} 

Należy zauważyć, że polecenie exception może być niezgodne z intuicją. Instrukcja zawiera następujące informacje:

W instrukcji wyjątku są wychwytywane błędy, które normalnie powodują, że mailowanie zostanie zakończone na . Jeśli w dowolnym miejscu w ciągu zostanie napotkany błąd krytyczny, blok instrukcji dołączony do klauzuli wyjątku, wykonanie zostanie wznowione natychmiast po klauzuli wyjątku.

+0

Po wyszukaniu Twojego pytania szukałem filtra kropli. Ale dla maildrop znalazłem skomplikowane wyjaśnienie [tutaj] (http://blog.sigil.org/2009/11/mark-as-read-with-maildrop.html) – drumfire

Powiązane problemy