Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/06/2012, à 14:03

toulipe

[RESOLU] Vérification qu'un mail a bien été reçu

Bonjour à tous,

Je suis un train d'écrire un petit script qui me permet d'envoyer sur ma boîte mail, et à partir de cette même boîte mail, un fichier sélectionné par moi-même. Au début du script, j'ai indiqué le paramètre set -e, de telle sorte que, s'il se produit une erreur, le script s'arrête de lui-même, et je suis au courant qu'il y a eu un problème.

Le problème avec Mutt, le programme que j'utilise pour m'envoyer le fichier, c'est qu'il ne retourne pas de code d'erreur si le mail n'a pas été envoyé ; en d'autres termes, si par exemple ma connection Wifi est coupé, et que le mail n'est pas parvenu sur ma boîte, il ne me le signale pas.

Pour pallier à ça, il faudrait que je puisse vérifier, sur ma boîte mail, si le mail a bien été reçu (cela en ligne de commande, bien sûr) ; y a t'il moyen de faire ça avec Mutt (pour l'instant je n'ai rien trouvé sad), ou, peut-être, existe-t'il un autre moyen d'arriver au même résultat ?

Dernière modification par toulipe (Le 22/06/2012, à 18:24)

Hors ligne

#2 Le 22/06/2012, à 17:46

toulipe

Re : [RESOLU] Vérification qu'un mail a bien été reçu

Après de longues recherches, j'ai finalement trouvé une manière de faire, que je résume ici.

Il faut d'abord installer le paquet heirloom-mailx, puis créer dans votre /home un fichier .mailrc qui doit contenir (en partant du principe que vous utilisez gmail)

account gmail {
set folder=imaps://monidentifiant@imap.gmail.com
set password-monidentifiant@imap.gmail.com="monmotdepasse"
}

Ensuite, dans votre script, notez les lignes suivantes :

titredumail="Le titre de mon mail"
variabletest=$(mailx -A gmail -H | grep -o "$titredumail");
if [ "$variabletest" = "$titredumail" ]
   then
         clear
         echo "Tout s'est déroulé convenablement !"
   else
         echo "Le mail n'a pas été envoyé !"
fi

Comment ça marche :
mailx -A gmail -H ---> affiche la liste complète des mails reçus sur le compte que vous avez paramétré dans le .mailrc.
grep -o "$titredumail" ---> permet de ne retenir dans la liste d'emails que celui dont le titre correspond à celui que vous avez défini auparavant dans le script, et tronçonne la ligne correspondant à cet e-mail de manière à ce qu'il n'apparaisse que son titre.
variabletest=$(....); ---> stocke le résultat obtenu par le grep dans une variable.
if... then... else ---> si le mail a bien été reçu, la variable "variabletest" a le même contenu que la variable "titredumail", et l'on affiche un message indiquant que le mail a été reçu ; sinon, les contenus sont différents, et l'on indique un message d'erreur.

Il y avait probablement moyen de faire mieux, mais en tout cas cela fonctionne.

Dernière modification par toulipe (Le 22/06/2012, à 18:08)

Hors ligne