Comment faire pour préserver les caractères de nouvelle ligne de sendmail pour en script bash?

Pourquoi ce n'est pas la suite de préserver les caractères de nouvelle ligne dans l'e-mail?

#!/bin/bash

file="/tmp/ip.txt"
address=$(curl -s http://ipecho.net/plain; echo)
ifconfig=$(ifconfig)

function build_body
{
    echo "----------------------------------------------------------------" > $file
    echo "IP Address: $address (according to http://ipecho.net/plain)" >> $file
    echo "----------------------------------------------------------------" >> $file
    echo >> $file
    echo "Result from ifconfig:" >> $file
    echo >> $file
    echo "$ifconfig" >> $file
    echo >> $file
}

build_body
msg=$(cat $file)
mail="subject:Home Server Status\nfrom:[email protected]\n$msg"
echo $mail | /usr/sbin/sendmail "[email protected]"

J'ai reçu le mail ce script génère, cependant, le corps entier est sur une seule ligne!
/tmp/ip.txt est exactement comment je veux que l'e-mail pour look.

Pourquoi ne pas utiliser le mail utilitaire: mail -s "Subject" [email protected] < /path/to/body.txt j'ai l'habitude de l'utiliser.
Parfait, simple et juste ce que je voulais... Merci.
Deux choses: Vous echo $mail | /usr/sbin.... Cela supprime tous les excès de l'espace blanc lorsque vous faites un écho sans les guillemets. Essayez echo "$mail" | /usr/bin.... Aussi, il peut y avoir un problème avec sendmail ne pas envoyer de \r\n à la fin de chaque ligne qui est ce que les RFC pour e-mail nécessite. Essayez des guillemets autour de $mail et voir si cela prend soin de la question. Si non, utilisez echo "$mail" | mail -s "$subject" $user Notez les guillemets!

OriginalL'auteur Charlie | 2014-02-04