OVH Cloud OVH Cloud

trier une liste de mail

9 réponses
Avatar
Rakotomandimby Mihamina
Bonjour,
Une amie (très intelligente) m'a envoyé une liste de mail tres
desordonnée, pour que j'envoie le mail a chacun de ces adresses ...

Il y en a quelques dizaines. Je peux pas (et j'ai pas envie) de traiter
cela manuellement.

la liste est de la forme :

"Nom prenom" <user@domain.tld> , <autre_user@autredomaine.tld> , ...

(J'ignore si il y a des passages a la ligne et si ce sont des passages a
la ligne a la Windows o a la UNIX, car on m'a envoyé la liste par mail)

bref ... des fois y a le nom+prenom, des fois y a pas.
en tout cas, les adressess mail sont toujours entre "<" et ">" .

ce que je voudrais c'est prendre uniquement les adresses, (entre "<" et
">") dans le but de faire un boucle du genre

OBJ="un sujet"
for ADRESSE in `cat adresse_liste.txt`; do
cat texte_a_mailer.txt | mail -s $OBJ $ADRESSE
done

Donc recuperer une adresse par ligne serai l'ideal.

C'est pas du spam. c'est juste pour un envoi unique.

J'utilise zsh

Je vais pas mettre en eouvre un truc de ML pour un envoi unique

J'ai vraiment pas envie de me taper la saisie manuelle des adresses
(risque de bacler le travail ...)

Donc avec awk (supposons) je sais faire pour isoler en prenant les
separateurs de champ "," (dasn un premier temps) ... mais ensuite c'est
plus compliqué ...

Auriez-vous un tuyau ?

Merci d'avance .

9 réponses

Avatar
Laurent Wacrenier
Rakotomandimby Mihamina écrit:
la liste est de la forme :

"Nom prenom" , , ...

(J'ignore si il y a des passages a la ligne et si ce sont des passages a
la ligne a la Windows o a la UNIX, car on m'a envoyé la liste par mail)

bref ... des fois y a le nom+prenom, des fois y a pas.
en tout cas, les adressess mail sont toujours entre "<" et ">" .


Met tout ça dans le champs To:, ton logiciel sait se débrouiller avec.

Avatar
FAb
Laurent Wacrenier <lwa@ teaser . fr> writes:

Rakotomandimby Mihamina écrit:

bref ... des fois y a le nom+prenom, des fois y a pas.
en tout cas, les adressess mail sont toujours entre "<" et ">" .


Met tout ça dans le champs To:, ton logiciel sait se débrouiller avec.


Pas assez compliqué mon fils... ;-)


FAb


Avatar
Laurent Wacrenier
Rakotomandimby Mihamina écrit:
Laurent Wacrenier wrote:
Met tout ça dans le champs To:, ton logiciel sait se débrouiller avec.


C'est pas aussi simple ... il vaut mieux que chaque destinataire ne
reçoive pas aussi la liste complete ... enfin ... rien ne me l'interdit,
mais je trouve que c'est pas du bon boulot ....


Met le alors dans le champ Bcc.


Avatar
Rakotomandimby Mihamina
Laurent Wacrenier wrote:
Met tout ça dans le champs To:, ton logiciel sait se débrouiller avec.


C'est pas aussi simple ... il vaut mieux que chaque destinataire ne
reçoive pas aussi la liste complete ... enfin ... rien ne me l'interdit,
mais je trouve que c'est pas du bon boulot ....

--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://www.rktmb.org/Members/mihamina

Avatar
Pascal Bourguignon
Laurent Wacrenier <lwa@ teaser . fr> writes:

Rakotomandimby Mihamina écrit:
la liste est de la forme :

"Nom prenom" , , ...

(J'ignore si il y a des passages a la ligne et si ce sont des passages a
la ligne a la Windows o a la UNIX, car on m'a envoyé la liste par mail)

bref ... des fois y a le nom+prenom, des fois y a pas.
en tout cas, les adressess mail sont toujours entre "<" et ">" .


Met tout ça dans le champs To:, ton logiciel sait se débrouiller avec.


Le champ Bcc:


--
__Pascal Bourguignon__ http://www.informatimago.com/

Our enemies are innovative and resourceful, and so are we. They never
stop thinking about new ways to harm our country and our people, and
neither do we.


Avatar
cedric
Rakotomandimby Mihamina wrote:
"Nom prenom" , , ...

bref ... des fois y a le nom+prenom, des fois y a pas.
en tout cas, les adressess mail sont toujours entre "<" et ">" .


Au fait, et au risque de dire une connerie qui sera dans ce cas corrigée
bien vite, il n'y a pas d'un coté le nom et de l'autre, entre '<' et
'>', l'adresse mail. D'après le RFC, l'ensemble forme une adresse mail
tout à fait valide et il n'y a pas de raison spéciale pour que ton
éventuel programme les sépare.

Avatar
Marc Lasson
Rakotomandimby Mihamina wrote:
Bonjour,


Salut !

Alors, je previens: c'est pas très fin et ça come WITHOUT ANY WARRANTY !
On doit pouvoir réussir à trouver des entrées tordues (genre des retours
à la ligne entre les guillemets ...) qui font planté le tout.
En espérant que ça t'aide um poquito.

la liste est de la forme :

"Nom prenom" , , ...

(J'ignore si il y a des passages a la ligne et si ce sont des passages a
la ligne a la Windows o a la UNIX, car on m'a envoyé la liste par mail)

bref ... des fois y a le nom+prenom, des fois y a pas.
en tout cas, les adressess mail sont toujours entre "<" et ">" .


:~$ cat entree
"nom prenom" , , "nom
prenom" , , "nom prenom"
, , "nom prenom"
,

:~$ cat entree |
sed 's/"[^"]*"//g' |
tr , 'n' |
sed 's/^[ t]*<([^>]*)>.*$/1/'
grep -v '^$'









La première ligne est UUOC.
La seconde vire tout ce qu'on peut trouver entre "".
La troisième transforme les ',' en retour à la ligne.
La quatrième extrait le contenu entre <>.
La derniere efface les lignes blanches.
Le tout écrit sur la sortie standard les mails de tes amis.

--
Marc.

Avatar
Rakotomandimby Mihamina
Marc Lasson wrote:
Rakotomandimby Mihamina wrote:
Salut !


salut .

:~$ cat entree
"nom prenom" , , "nom
prenom" , , "nom prenom"
, , "nom prenom"
,

:~$ cat entree |
sed 's/"[^"]*"//g' |
tr , 'n' |
sed 's/^[ t]*<([^>]*)>.*$/1/'


Il manquait le pipe a la fin de cette ligne.

grep -v '^$'







[...]

La première ligne est UUOC.
La seconde vire tout ce qu'on peut trouver entre "".
La troisième transforme les ',' en retour à la ligne.
La quatrième extrait le contenu entre <>.
La derniere efface les lignes blanches.
Le tout écrit sur la sortie standard les mails de tes amis.


merci beaucoup.



--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://www.rktmb.org/Members/mihamina

Avatar
dominix
"Rakotomandimby Mihamina" a écrit dans le message
de news:4119e8c4$0$22908$
Bonjour,
Une amie (très intelligente) m'a envoyé une liste de mail tres
desordonnée, pour que j'envoie le mail a chacun de ces adresses ...

Il y en a quelques dizaines. Je peux pas (et j'ai pas envie) de traiter
cela manuellement.

la liste est de la forme :

"Nom prenom" , , ...

(J'ignore si il y a des passages a la ligne et si ce sont des passages a
la ligne a la Windows o a la UNIX, car on m'a envoyé la liste par mail)

bref ... des fois y a le nom+prenom, des fois y a pas.
en tout cas, les adressess mail sont toujours entre "<" et ">" .

ce que je voudrais c'est prendre uniquement les adresses, (entre "<" et
">") dans le but de faire un boucle du genre

OBJ="un sujet"
for ADRESSE in `cat adresse_liste.txt`; do
cat texte_a_mailer.txt | mail -s $OBJ $ADRESSE
done

Donc recuperer une adresse par ligne serai l'ideal.



cat liste.txt |
|perl -0nal012e '@a{@F}++; print for sort keys %a'
|perl -ne 'print $& . "n" if m{(?>[w.-]+)@w+[.][w.]*}g;'


voila voila, ca marche bien, pas de doublons.
la premiere ligne de perl trie tout les mots separé par des espaces
la deuxieme n'imprime que ce qui resemble a une adresse email.
j'ai fait cela alors que j'avais le meme pb que toi ;-)
truc pour comprendre; remplacez "perl" par "perl -MOÞparse"
plus d'explication a la demande...

-- dominix