Bem, o que acontece quando você faz um redirecionamento stdin (o <
) é que o primeiro arquivo - e somente o primeiro - é aberto e seu conteúdo é passado para o stdin de mail
que o utiliza como corpo .
Como sua implementação mailx
é antiga, ela não suporta o sinal -a
da versão atual para criar anexos MIME. O que você pode fazer é criar o formato MIME, usando as coisas disponíveis.
Felizmente, não é difícil fazer usando um simples script bash (que eu tenho 100% de certeza que está disponível, mesmo no RHEL 5 :-)), algo tão simples como isso provavelmente faria:
#!/bin/bash
msgid="$RANDOM$RANDOM$RANDOM$RANDOM"
to="$1"
shift
subject="$1"
shift
echo "To: $to"
echo "From: [email protected]"
echo "Subject: $subject"
echo "Message-ID: $msgid"
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/mixed; boundary=$msgid"
echo "" # header termination
while [ -n "$1" ]; do
echo "--$msgid"
echo "Content-Type: text/plain; charset=UTF-8"
echo "Content-Disposition: attachment; filename=\"$(basename $1)\""
echo "Content-Transfer-Encoding: base64"
echo ""
base64 < "$1"
shift
done
Você só precisa enviar o texto de e-mail resultante para sendmail
para entrega, algo assim:
mail.sh "$SUBJECT" "$EMAIL" /home/user/checks/notprocessed.txt \
/home/user/checks/dirlist.txt | sendmail -t
Este script usa o comando base64
para arquivos "blindados ASCII", para que você possa enviar arquivos binários e de texto, mas se você não estiver enviando arquivos de texto, provavelmente descobrirá como definir Content-type
do anexo corretamente (ou apenas altere tudo para application/octet-stream
, ie "binário"). Esse comando está disponível como parte do coreutils no RHEL 5, portanto, não espero que exista um problema em usá-lo.
Observe também o uso do -t
flag para sendmail
para que o MTA apenas leia o envelope de email do próprio email, portanto não há necessidade de colocar mais nada nos argumentos do comando sendmail
. Apenas certifique-se de que o script inclua todos os campos necessários na saída - eu li o destinatário e o assunto da linha de comando como mailx
, mas não é necessário e o endereço do remetente é codificado de qualquer maneira. / p>