Você precisa especificar o Content-Transfer-Encoding para a parte MIME com o anexo. Eu não sei se o uuencode é um padrão. Base64 é embora.
Você também precisa enviar o marcador de limite de fechamento.
Seu redirecionamento para o gato está errado.
(cat << !
From: $FROM
To: $TO
Subject: $SUBJECT
Date: $(date +"%a, %b %e %Y %T %z")
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="$boundary"
This email has attached the file
--$boundary
Content-Type: text/plain; charset=ISO-8859-1
Please see the attachmed file.
--$boundary
Content-Transfer-Encoding: base64
Content-Type: $MIME;name="$ATTACH1"
Content-Disposition: attachment;filename="$ATTACH1"
$(base64 "$ATTACH1")
--$boundary--
!
) | sendmail -v "$TO"