OVH Cloud OVH Cloud

Envoyer un mail par unix avec un fichier attaché

4 réponses
Avatar
vchauviere
Je voudrais envoyer un mail avec un fichier attaché avec les commandes
en ligne d'UNIX, mais seulement avec les commandes standard,
c'est-à-dire que je ne veux pas utiliser mutt et autres metasend.
J'ai essayé :
uuencode <fichier> <fichier> | mail -s "sujet" adresse@mail. ça marche
assez bien, mais le problème, c'est que le format du fichier texte
récupéré par Outlook n'est pas correct : la gestion des sauts de ligne
est étrange. Worpad le lit correctement, mais pas Notepad.
Comme les fiturs utilisateurs ne sont pas informaticiens et qu'ils
vont basiquement utiliser Notepad, quelqu'un pourrait-il me dire
comment faire pour avoir un format correct, lisible par le Notepad ?

De plus, je n'ai pas l'aide sur les commandes. (la commande "man"
n'est pas dispo sur le serveur). Donc s'il y a des options dans la
commande uuencode qui permet de gérer cela, pouvez-vous me le dire ?

4 réponses

Avatar
Serge Gagnon
Vincent wrote:
Je voudrais envoyer un mail avec un fichier attaché avec les commandes
en ligne d'UNIX, mais seulement avec les commandes standard,
c'est-à-dire que je ne veux pas utiliser mutt et autres metasend.
J'ai essayé :
uuencode <fichier> <fichier> | mail -s "sujet" ça marche
assez bien, mais le problème, c'est que le format du fichier texte
récupéré par Outlook n'est pas correct : la gestion des sauts de ligne
est étrange. Worpad le lit correctement, mais pas Notepad.
Comme les fiturs utilisateurs ne sont pas informaticiens et qu'ils
vont basiquement utiliser Notepad, quelqu'un pourrait-il me dire
comment faire pour avoir un format correct, lisible par le Notepad ?



http://www.ornl.gov/lists/mailing-lists/tru64-unix-managers/1997/04/msg00530.html
L'auteur de ce message donne comme example... un envoi de mail
en utilisant uuencode.

De plus, je n'ai pas l'aide sur les commandes. (la commande "man"
n'est pas dispo sur le serveur). Donc s'il y a des options dans la
commande uuencode qui permet de gérer cela, pouvez-vous me le dire ?


Je ne sais pas quelle systeme tu utilise, mais il arrive fréquement
de pouvoir les avoir sur le net. Une petite recherche de google
pour tes pages man pourrait etre intéressant.

Avatar
Pascal Bourguignon
(Vincent) writes:

Je voudrais envoyer un mail avec un fichier attaché avec les commandes
en ligne d'UNIX, mais seulement avec les commandes standard,
c'est-à-dire que je ne veux pas utiliser mutt et autres metasend.
J'ai essayé :
uuencode <fichier> <fichier> | mail -s "sujet" ça marche
assez bien, mais le problème, c'est que le format du fichier texte
récupéré par Outlook n'est pas correct : la gestion des sauts de ligne
est étrange. Worpad le lit correctement, mais pas Notepad.
Comme les fiturs utilisateurs ne sont pas informaticiens et qu'ils
vont basiquement utiliser Notepad, quelqu'un pourrait-il me dire
comment faire pour avoir un format correct, lisible par le Notepad ?

De plus, je n'ai pas l'aide sur les commandes. (la commande "man"
n'est pas dispo sur le serveur). Donc s'il y a des options dans la
commande uuencode qui permet de gérer cela, pouvez-vous me le dire ?


On pourrait ajouter une détermination du Content-Type: en fonction de
la sortie de file $arg, mais ça fait l'essentiel.
(Ceci dit, pourquoi ne pas utiliser metasend, mmencode, ou mutt???)

#/bin/bash
#*****************************************************************************
#FILE: send-mime
#LANGUAGE: sh
#SYSTEM: POSIX
#USER-INTERFACE: NONE
#DESCRIPTION
#
# Sends files in a MIME message.
#
#USAGE
# send-mime "$subject" "$recipient"... -- "$file" ...
#AUTHORS
# <PJB> Pascal Bourguignon
#MODIFICATIONS
# 2003-12-05 <PJB> Created
#BUGS
# Content-Type: is static.
# We can't edit an introduction text.
# The Orginazation should be taken from environment variable ORGANIZATION.
# ...
#LEGAL
# GPL
#
# Copyright Pascal Bourguignon 2003 - 2003
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 59 Temple Place, Suite 330,
# Boston, MA 02111-1307 USA
#*****************************************************************************
code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
padd
sender="${LOGNAME}@$(hostname)"
organization="No Itaz Nagro, Inc."
boundary="${RANDOM}${RANDOM}.$(hostname).$(date '+%Y-%m-%d-%H-%M-%S')"
(
echo "From: <$sender}>"
echo "Organization: $organization"
echo "Subject: $1"
shift
arg="$1"
while [ $# -ge 1 -a "$arg" != "--" ] ; do
echo "To: <${arg}>"
shift
arg="$1"
done
shift
echo "Mime-Version: 1.0"
echo "Content-Transfer-Encoding: 7bit"
echo "Content-Disposition: inline"
echo "Content-Type: multipart/mixed; boundary="${boundary}""
echo ""
for arg ; do
echo "--${boundary}"
echo "Content-Type: application/x-octetstream"
echo "Content-Transfer-Encoding: base64"
echo "Content-Disposition: attachment; filename="${arg}""
echo "Content-Description: $(file "$arg")"
echo ""
i=0;
# aaaaaa aa bbbb bbbb cc cccccc
# uuuuuu dd dddd tttt tt qqqqqq
od -v -td1 -w3 < "${arg}"
| sed -e 's/^[0-7]+//'
| while read a b c && [ -n "$a" ] ; do
u=$(( $a / 4 ))
if [ -z "$b" ] ; then
d=$(( ( $a * 16 ) % 64 ))
t="$pad"
q="$pad"
elif [ -z "$c" ] ; then
d=$(( ( ( $a * 16 ) + ( $b / 16 ) ) % 64 ))
t=$(( ( $b * 4 ) % 64 ))
q="$pad"
else
d=$(( ( ( $a * 16 ) + ( $b / 16 ) ) % 64 ))
t=$(( ( ( $b * 4 ) + ( $c / 64 ) ) % 64 ))
q=$(( $c % 64 ))
fi
i=$(( ( $i + 1 ) % 18 ))
echo -n "${code:$u:1}${code:$d:1}${code:$t:1}${code:$q:1}"
if [ $i -eq 0 ] ; then echo "" ; fi
done
echo ""
echo ""
done
echo "--${boundary}--"
) | sendmail -t "-f $sender"
#### send-mime -- 2003-12-05 12:31:59 -- pascal ####



--
__Pascal_Bourguignon__ . * * . * .* .
http://www.informatimago.com/ . * . .*
* . . / ( . . *
Living free in Alaska or in Siberia, a . . / . . * .
grizzli's life expectancy is 35 years, .*. / * . .
but no more than 8 years in captivity. . /* o .
http://www.theadvocates.org/ * '''||''' .
******************

Avatar
David LE BOURGEOIS

Je voudrais envoyer un mail avec un fichier attaché avec les commandes
en ligne d'UNIX, mais seulement avec les commandes standard,
c'est-à-dire que je ne veux pas utiliser mutt et autres metasend.
J'ai essayé :
uuencode <fichier> <fichier> | mail -s "sujet" ça marche
assez bien, mais le problème, c'est que le format du fichier texte
récupéré par Outlook n'est pas correct : la gestion des sauts de ligne
est étrange


Non c'est normal. La gestion des sauts de ligne est différentes entre
Unix et Windows.

. Worpad le lit correctement, mais pas Notepad.

Faut bien qu'il y ait une différence entre les deux programmes :-)
Installer gVim ?

Comme les fiturs utilisateurs ne sont pas informaticiens et qu'ils
vont basiquement utiliser Notepad, quelqu'un pourrait-il me dire
comment faire pour avoir un format correct, lisible par le Notepad ?


sed 's/$/^M/' fichier | uuencode fichier | mail -s "sujet" addresse

--
David LE BOURGEOIS

Avatar
Raslebol des patches Windoze
Dans l'article
écrivait :

J'ai essayé :
uuencode <fichier> <fichier> | mail -s "sujet" ça marche
assez bien, mais le problème, c'est que le format du fichier texte
récupéré par Outlook n'est pas correct : la gestion des sauts de ligne
est étrange. Worpad le lit correctement, mais pas Notepad.


normal, Wordpad c'est mieux, ça gère les fichiers texte unix.
Et ce n'est pas étrange du tout vu que ms_dos (Win) c'est
comme CP/M, il lui faut un CR/LF pour aller à la ligne.

Comme les fiturs utilisateurs ne sont pas informaticiens et qu'ils
vont basiquement utiliser Notepad, quelqu'un pourrait-il me dire
comment faire pour avoir un format correct, lisible par le Notepad ?


unix2dos (le source fait 151 lignes)
ou un coup de sed

PS : notepad et un fichier de 255 K, ça doit exploser méchant :)