#!/bin/sh #nicofo - 2006 #version 2 : 23/12/206 : ajout 'body & subject' #arguments possibles : liste de fichiers (sans le dossier contenant) # ou un fichier (chemin complet) [utilisé avec Compress and email] #Renvoie 1 si lance thunderbird ; 2 si thunderbird est déjà lancé ; 0 si erreur res=0 if [ -z $* ] #par ex si le fichier provient de samba then zenity --error --title="Erreur" --text="Aucun fichier normal sélectionné" exit $res fi # 1) passage des fichiers # ----------------------- n=0 #nombre de fichiers à envoyer e=0 #nombre d'erreurs if [[ $1 == /* ]] && [ $# -eq 1 ] then path="file:/" #ci-dessous, un '/' est encore ajouté else path="$NAUTILUS_SCRIPT_CURRENT_URI" #Rem = "file://$(pwd)" cd ${path#*://} #chemin sans 'file://' ; utile si on est sur le bureau par ex. fi for file in "$@" #[rem != $*, "$*", $@] OU "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" (=chemin complet) do if [ -f "$file" ] #si c'est un fichier ordinaire (pas un dossier) then attach=$attach"$path/$file", #la virgule à la fin : pas important n=$(($n+1)) set $(du -bh "$file") body="$body ${file##*/} ($1B)" # '##*/' supprime le chemin du fichier (donné que si $1=/* && $#=1) else err="$err \"$file\" " e=$(($e+1)) fi done # 2) msg d'erreur # --------------- if [ $e -gt 0 ] then if [ $e -eq 1 ] then msg="n'est pas un fichier ordinaire." else msg="ne sont pas des fichiers ordinaires !" fi if [ $n -eq 0 ] then opt="--error" else opt="--warning" fin=" - Cancel : annule l'envoi de mail, - OK : envoie les autres fichiers." fi zenity $opt --title="Erreur" --text="Erreur : $err$msg$fin" if [ $? -eq 1 ] #si on appuye sur "Cancel" ==> $?=1 then n=0 #OU exit (on n'envoie pas de mail) fi fi # 3) envoi ! # ---------- if [ $n -gt 0 ] then #remplacer les espaces par '%20' sinon marche pas dans ce script mais bien dans un terminal ??? #'g' à la fin ==> remplace TOUS les espaces (sinon, un seul remplacement à la fois) attach=$(echo "$attach"|sed "s/ /%20/g") attach=attachment=\'$attach\' #rem : ATTENTION aux ' et aux " !!! if [ $n -eq 1 ] ; then fich=${body% (*} #supprime suffixe fich=${fich#* } #supprime préfixe body="Le fichier suivant est joint :$body,subject=$fich" else body="$n fichiers joints :$body" fi body=" $body" #si thunderbird tourne déjà, utiliser "thunderbird -remote" TMP=$(ps -e | grep "thunderbird") if [ -z "$TMP" ] #OK si ne tourne pas encore then echo thunderbird -compose $attach,body="$body" thunderbird -compose $attach,body="$body" res=1 else echo thunderbird -remote "xfeDoCommand(composeMessage,$attach,body=$body)" thunderbird -remote "xfeDoCommand(composeMessage,$attach,body=$body)" res=2 fi #Si 'thunderbird -compose ne marche pas : # if [ -z "$TMP" ] #OK si ne tourne pas encore # then # thunderbird & # sleep 2 # fi # echo thunderbird -remote "xfeDoCommand(composeMessage,$attach)" # thunderbird -remote "xfeDoCommand(composeMessage,$attach)" # res=2 fi exit $res