logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 31-03-2018 10:44:43

loularsen
Membre
Lieu : Lanzarote
Distrib. : bullseye
Noyau : Linux 5.10.0-19-amd64
(G)UI : openbox
Inscription : 26-02-2018

[Clos][Résolu] "cat /var/mail/$USER | grep '^Subject:' " illisible

Bonjour à tous,
J'utilise notify-send pour avoir un oeil sur les sujets des mails entrant dans ma boite /var/mail/$user.
Dans mon script, le retour de

cat /var/mail/$USER | grep '^Subject:'  


Subject: Anacron job 'update_meteo_atlantique' on baraka
Subject: =?iso-8859-1?B?Vm91cyBhdmV6IGp1c3F1kuAgZGltYW5jaGWF?=
Subject: =?utf-8?B?UkU6IHByb2Jsw6htZSBkZSByYWxpbmd1ZQ==?=
Subject: =?utf-8?Q?April=20Festivals=20Guide=2C=20Rosa=20Verhoeve=20Photobook=20Review=2C=20and=20more=C2=A0?=



Pas de problèmes pour les messages locaux, mais pour les messages externes, les sujets
ne sont pas toujours décodés.

Le retour de :

~$ locale -a


C
C.UTF-8
fr_FR.utf8
POSIX



Il est à noter que lorsque les messages arrivent dans thunderbird avec compte movemail, les sujets sont bien décodés.
Quelqu'un aurait il une idée de code que je pourrais ajouter avec un pipe à:
cat /var/mail/$USER | grep  '^Subject:'    afin de visualiser en clair les sujets de mails sur mon bureau ?

Je tourne en rond depuis un moment la dessus, rien de trouvé de significatif autant sur le forum que sur
internet en général. Je me perds dans tous les types d'encodages utilisés ...

Merci.

Dernière modification par loularsen (28-04-2018 13:49:07)


Au beau milieu de nulle part ......

Hors ligne

#2 04-04-2018 16:44:29

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [Clos][Résolu] "cat /var/mail/$USER | grep '^Subject:' " illisible

Salut
$user c'est une variable?
ça serait pas $USER plutôt ?

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#3 04-04-2018 21:06:52

loularsen
Membre
Lieu : Lanzarote
Distrib. : bullseye
Noyau : Linux 5.10.0-19-amd64
(G)UI : openbox
Inscription : 26-02-2018

Re : [Clos][Résolu] "cat /var/mail/$USER | grep '^Subject:' " illisible

Corrigé,

Ai poussé mes recherches et suis sur le point de résoudre les problèmes de décodage base64 et Quoted-Printable.
À suivre......

Dernière modification par loularsen (14-04-2018 17:00:28)


Au beau milieu de nulle part ......

Hors ligne

#4 10-04-2018 17:58:21

loularsen
Membre
Lieu : Lanzarote
Distrib. : bullseye
Noyau : Linux 5.10.0-19-amd64
(G)UI : openbox
Inscription : 26-02-2018

Re : [Clos][Résolu] "cat /var/mail/$USER | grep '^Subject:' " illisible

Problèmes résolus:

1/Décoder les entêtes

base-64

perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)'



quoted-printable

perl -MMIME::QuotedPrint -ne 'printf "%s\n",decode_qp($_)'



2/ Pour notification par notify-send

Encoder les sorties en UTF-8
Pour les ISO-8859-1

iconv -f ISO-8859-1 -t UTF-8//TRANSLIT


Au beau milieu de nulle part ......

Hors ligne

#5 13-04-2018 14:55:15

loularsen
Membre
Lieu : Lanzarote
Distrib. : bullseye
Noyau : Linux 5.10.0-19-amd64
(G)UI : openbox
Inscription : 26-02-2018

Re : [Clos][Résolu] "cat /var/mail/$USER | grep '^Subject:' " illisible

Script pour visualiser les sujets de courrier par notification sur le bureau

#!/bin/sh
# script de notification (récapitulatif arrivée de nouveaux courriers),
#avec listing par sujets.

export PATH=/usr/local/bin:/usr/bin:/bin
DISPLAY=:0.0
LOGFILE=/tmp/dec_sub_converted.log
MAILFILE=/var/mail/$USER
ICON=/usr/share/icons/Clarity/scalable/emblems/emblem-mail.svg
TITRE=$(printf "%b\n" "Nouveaux messages \nSujets:")

decodebase64(){
perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)'
}
decodeqp(){
perl -MMIME::QuotedPrint -ne 'printf "%s\n",decode_qp($_)'
}
iconv_1(){
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT
}
iconv_15(){
iconv -f ISO-8859-15 -t UTF-8//TRANSLIT
}

> $LOGFILE ;
cat < "$MAILFILE" | grep '^Subject:' | while read -r output ;
do
  cod=$(echo "$output" | cut -d'?' -f2,3 )
  ligne=$(echo "$output" | cut -d'?' -f4 )
  case $cod in
    [Uu][Tt][Ff]-8?B) echo "$ligne" | decodebase64 ;;
    [Ii][Ss][Oo]-8859-1?B) echo "$ligne" | decodebase64 | iconv_1 ;;
    [Ii][Ss][Oo]-8859-15?B) echo "$ligne" | decodebase64 | iconv_15 ;;
    [Uu][Tt][Ff]-8?Q) echo "$ligne" | decodeqp ;;
    [Ii][Ss][Oo]-8859-1?Q) echo "$ligne" | decodeqp | iconv_1 ;;
    [Ii][Ss][Oo]-8859-15?Q) echo "$ligne" | decodeqp | iconv_15 ;;
    *) echo "$ligne" ;;
  esac
done >> $LOGFILE ;
mess=$(cat -b < "$LOGFILE" | sed -e '/^$/d;s/Subject: //;s/_/ /g;s/^[ \t]*//;s/[ \t]*$// ')
if [ -z "$mess" ] ;
then
   notify-send "Nouveaux messages" "Aucun" -i "$ICON" -t 3000 ;
else
   notify-send "$TITRE" "$mess" -i "$ICON" -t 0 ;
fi


exit 0
 




Si quelqu'un a une meilleure suggestion ....
Merci

Dernière modification par loularsen (28-04-2018 13:44:20)


Au beau milieu de nulle part ......

Hors ligne

Pied de page des forums