Problématique

Lorsqu'on veut envoyer un courriel en shell, il peut parfois être utile d'y adjoindre un fichier. Si mailx permet d'envoyer aisément un message, il est moins aisé d'attacher un fichier. le man n'indique rien à ce sujet

Solution 1

Pour envoyer un message avec fichier attaché, il faut utiliser uuencode.

cat ${FILENAME} | uuencode ${FILENAME} | mailx -s "${sujet}" ${destinataire}

Seulement, le fichier attaché n'est pas tout à fait lisible. S'il s'agit d'un fichier texte et que vous le lisez sous Windows, vous verrez que les retours chariot ne permettent pas une bonne lisibilité. pour contourner ce problème, il suffit de changer le retour chariot grâce à sed :

sed "s/$/`echo \\\r`/" ${FILENAME} | uuencode ${FILENAME} | mailx -s "${sujet}" ${destinataire}

Solution 2

La même chose, avec une notation différente :

mailx -s "${sujet}" ${destinataire} <<-EOF
	Bonjour,

	Veuillez trouver  ci-joint le fichier demandé
	~< ! uuencode ${FILENAME} `basename ${FILENAME}`
	~.
	EOF