Minha bola de cristal acha que talvez o texto da sua mensagem contenha um dos mais de < ou > .
Parece-me o seu uso
mailCommand='mail -s [email protected] < $email'
não fará o que você deseja: isso levará o conteúdo de $email como um nome de arquivo (falhando um pouco porque $email consiste em várias palavras), tente ler seu conteúdo, coloque-o no comando mail , e, em seguida, atribua a saída do comando mail à variável mailCommand .
Meu pensamento seria que você quer algo como
echo "$email" | mail -s [email protected]
i.e. pegar a string na variável email e alimentá-la no programa de email?
(Como uma nota lateral, muitas pessoas preferem atualmente a notação $(foo) para substituição de comando, em vez de backticks.)