Page 1 sur 1

[script] extraire From, Subject et message d'un mail.

Publié : mar. 11 mars 2008, 18:24
par cassyb
salut,

J'aimerais bien récupérer le From:, Subject: et le message d'un fichier de mail
genre:
From - Tue Mar 11 17:57:28 2008
...
From: "NOM Prenom" <son_adresse@webmail.fr>
...
Subject: Salut!
Content-Type: text/html; charset=iso-8859-1; format=flowed
X-OriginalArrivalTime: 08 Jul 2007 19:51:53.0137 (UTC) FILETIME=[6E7FBA10:01C7C199]

ok ce message n'est pas en html

...
From - Tue Mar 11 17:58:04 2007

Ce que je n'arrive pas:
1.
récupérer NOM-prenom@mail.fr dans:
From: NOM Prenom <NOM-prenom@mail.fr>
2.
Détecter la fin du header pour récupérer le corp du message.

vous pouvez me dire comment faire?
merci.

Publié : mar. 11 mars 2008, 18:34
par vincentxavier

Code : Tout sélectionner

sed -r -e 's/<(.*@.*)>/\1/

Publié : mar. 11 mars 2008, 20:06
par cassyb
ok mais j'aimerais avoir un resultat:
adresse email
sujet
message

actuellement je fais comme ça:
grep -e From: -e Subject: -e \n\n fichier_mails
( \n\n représentant la fin des headers)

je peux récupérer l'adresse email en faisant un pipe:
| grep -o "[[:alnum:]]*@[[:alnum:]]*.[[:alnum:]]*"

Le problème c'est que des fois j'ai des:
zCqSnilhUS1U8X3cMU4qKebzGCNvAF/zUcTqxDBWsAR7u+72tyPDhaVFoDwqK8CCDwCnBOmnnwPW
0ZlmlNJ4IgBoETEOLlfYlu4FegjVUhRKMPNq1BAAbyrUn4hinn1azncyMdRLGijGRUVFKEeVaevn
1AAFfnnPkctjNBQEf9ld97U3Fs2HJ7lrtsQ0CRRUsmM3CtPichHHrmlgxVdja2nlNTJQtLZKqCLx
que je n'arrive pas à filtrer avec
grep -v base64
(cf: Content-transfer-encoding)

y'aurait pas un paquet qui permettrait de récupérer directement ces champs?
Sur le net, ils parlent mimedump mais pas moyen de trouver un exemple.

Publié : mar. 11 mars 2008, 20:46
par Tebo

Code : Tout sélectionner

alias fetchmail='echo "" > /home/jul/mail/.procmail.log; fetchmail; tail -100 $HOME/mail/.procmail.log |grep Subject'
bon bon :arrow: []

Publié : mar. 11 mars 2008, 20:55
par tuxce
tu peux peut etre utiliser procmail

Publié : mar. 11 mars 2008, 23:48
par cassyb
@Tebo: ??.!§&"???
@tuxce:
Je ne vois pas avec procmail comment je pourrais faire ce que je veux faire.
Je ne cherche pas à filtrer des mails je veux juste récupérer certains champs des mails à partir d'un fichier à donner en paramètre.

Publié : mer. 12 mars 2008, 01:45
par tuxce
en fait, c'est avec le programme qui vient avec procmail: formail
par exemple avec un script de ce genre:

Code : Tout sélectionner

#!/bin/sh
cat > /tmp/$$
mail_de=$(cat /tmp/$$ | formail -x "From:" )
mail_sujet=$(cat /tmp/$$ | formail -x Subject )
# Le corps du sujet (à mettre dans un fichier tmp?):
cat /tmp/$$ | formail -I "" 
rm /tmp/$$
# traitement ...
qui s'appellerait par exemple mail_extract.sh, tu lancerais la commande suivante:

Code : Tout sélectionner

cat mbox | formail -s ./mail_extract.sh
pour le corps du message et l'entete au complet, tu as des exemples avec sed dans le man de formail

Publié : mer. 12 mars 2008, 09:36
par cassyb
merci tuxce.
Ce qui m'interresserait serait de pouvoir ignorer les pièces jointes

un

Code : Tout sélectionner

cat /tmp/$$ | formail -I "" -I Content-Transfer-Encoding: -I Content-Disposition
ne m'enlève même pas Content-Transfer-Encoding, Content-Disposition

Mais je suis pas sûre que même s'il arrivait à me les enlever il m'enlevera aussi les
zCqSnilhUS1U8X3cMU4qKebzGCNvAF/zUcTqxDBWsAR7u+72tyPDhaVFoDwqK8CCDwCnBOmnnwPW
0ZlmlNJ4IgBoETEOLlfYlu4FegjVUhRKMPNq1BAAbyrUn4hinn1azncyMdRLGijGRUVFKEeVaevn
1AAFfnnPkctjNBQEf9ld97U3Fs2HJ7lrtsQ0CRRUsmM3CtPichHHrmlgxVdja2nlNTJQtLZKqCLx...
une idée?

Publié : mer. 12 mars 2008, 10:21
par cassyb
sinon j'ai trouvé cette classe en php qui marche nikel.

Publié : mer. 12 mars 2008, 10:28
par tuxce
sinon, tu avais:

Code : Tout sélectionner

sed -e '/Content-Disposition: attachment;/ q'
qui arrete dès qu'il trouve la phrase