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 - Canaries
Distrib. : stretch + backports
Noyau : Linux 4.14.0-0.bpo.2-amd64
(G)UI : xfce
Inscription : 26-02-2018

[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 (13-04-2018 15:01:27)

Hors ligne

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

Croutons
Membre
Distrib. : Handylinux 2.5 vers Jessie et Debian Stretch
Noyau : Linux 3.16.0-4-686-pae, Linux 4.9.0-3-686-pae
(G)UI : xfce
Inscription : 16-12-2016

Re : [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

Hors ligne

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

loularsen
Membre
Lieu : Lanzarote - Canaries
Distrib. : stretch + backports
Noyau : Linux 4.14.0-0.bpo.2-amd64
(G)UI : xfce
Inscription : 26-02-2018

Re : [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)

Hors ligne

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

loularsen
Membre
Lieu : Lanzarote - Canaries
Distrib. : stretch + backports
Noyau : Linux 4.14.0-0.bpo.2-amd64
(G)UI : xfce
Inscription : 26-02-2018

Re : [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

Hors ligne

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

loularsen
Membre
Lieu : Lanzarote - Canaries
Distrib. : stretch + backports
Noyau : Linux 4.14.0-0.bpo.2-amd64
(G)UI : xfce
Inscription : 26-02-2018

Re : [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 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  ligne ;                                    
do
     echo "$ligne" | grep -i '\(?UTF-8?B?\)' | cut -d'?' -f4 | decodebase64 ;
     echo "$ligne" | grep -i '\(?ISO-8859-1?B?\)' | cut -d'?' -f4 | decodebase64 | iconv_1 ;
     echo "$ligne" | grep -i '\(?ISO-8859-15?B?\)' | cut -d'?' -f4 | decodebase64 | iconv_15 ;
     echo "$ligne" | grep -i '\(?UTF-8?Q?\)' | cut -d'?' -f4 | decodeqp ;
     echo "$ligne" | grep -i '\(?ISO-8859-1?Q?\)' | cut -d'?' -f4 | decodeqp | iconv_1 ;
     echo "$ligne" | grep -i '\(?ISO-8859-15?Q?\)' | cut -d'?' -f4 | decodeqp | iconv_15 ;
     echo "$ligne" | grep -v -i '\(?B?\|?Q?\)' ;
done >> $LOGFILE ;
mess=$(cat -b "$LOGFILE" | sed -e '/^$/d;s/_/ /g;s/Subject: //;s/^[ \t]*// ')
if [ -z "$mess" ] ;
then
   notify-send "Nouveaux messages" "Aucun" -i "$ICON" ;
else
   notify-send "$TITRE" "$mess" -i "$ICON" -t 0 ;
fi


exit 0
#EOF

 

Hors ligne

Pied de page des forums