Rubriques
JMail - Envoi de mails avec pièce jointe
Présentation
-
Ce script est l'équivalent de la commande mailx, mais ajoute la possibilité d'envoyer des fichiers en pièce jointe au message.
La syntaxe est la suivante:
-
jmail -s "Sujet du mail" [-sender adresse_mail_emetteur] [-html] [-cc adresse_mail_en_copie] [-j fichier_a_attacher] adresse_mail_destinataire
L'option -html permet d'envoyer un mail au format html
L'option -cc permet d'ajouter des personnes en copie du message
Le script
#!/bin/ksh # Version 1.00 - 09/07/2000 # Auteur: Jerome DESMOULINS USAGE="Usage: $0 [-s 'Subject'] [-sender email_of_sender] [-html] [-cc E-mail] [[-j File] ...] E-mail [[E-mail] ...]" Mail_hub=`hostname ` Mail_user=$LOGNAME Boundary_mark="GM_Fecit" Subject="De `uname -n | cut -d'.' -f1`" Sender_address="$Mail_user@$Mail_hub" Format="text" export TERM=vt100 # Analyse des parametres while [ "$*" != "" ]; do case $1 in "-s") Subject=$2; shift 2;; "-sender") Sender_address=$2; shift 2;; "-j") [ -r $2 ] || { echo "$0: Ne peut lire $2"; exit 1; } File_lst="$File_lst $2"; shift 2;; "-html") Format="html"; shift;; "-cc") Mail_cc="$Mail_cc $2"; shift; shift;; *@*) Mail_lst="$Mail_lst $1"; shift;; esac done [ -z "$Mail_lst" ] && { echo "$USAGE\r You must specify at least one !"; exit 1; } ( sleep 1 echo "HELO $Mail_hub"; if test $Sender_address = "$Mail_user@$Mail_hub" then echo "MAIL FROM: <$Mail_user@$Mail_hub>"; sleep 1 else echo "MAIL FROM: <$Sender_address>"; sleep 1 fi for MailAddress in $Mail_lst; do echo "RCPT TO: <$MailAddress>"; done echo "DATA"; sleep 1 if test $Sender_address = "$Mail_user@$Mail_hub" then echo "From: $Mail_user@$Mail_hub ($0)" else echo "From: $Sender_address ($0)" fi echo "Subject: $Subject" echo "To: `echo $Mail_lst| tr ' ' ';'`" echo "Cc: `echo $Mail_cc| tr ' ' ';'`" echo "Date: `date `" echo "MIME-Version: 1.0" echo "X-Mailer: $0" echo "Content-Type: multipart/mixed; boundary=\"$Boundary_mark\"" echo echo "--$Boundary_mark" echo "Content-Type: text/$Format" echo "" # Le message cat <&0 | sed -e 's/^\.$/\.\./' echo "\n\n\n" # Les pieces jointes for File in $File_lst; do File_name=`basename $File` echo "--$Boundary_mark" echo "Content-Type: text/plain; name=\"$File_name\"" echo "Content-Disposition: attachment; filename=\"$File_name\"" echo "" cat $File | sed -e 's/^\.$/\.\./' echo "--$Boundary_mark" done echo "."; sleep 1 echo "QUIT"; sleep 1 echo "O\003" ) | telnet $Mail_hub 25 > /dev/null 2>&1 exit 0Retour