Seu primeiro exemplo envia stderr e stdout para o arquivo (2 > & 1); a variável MAILTO definida no cron capturará qualquer saída que não seja redirecionada, e isso combinado com direcionar a saída para o arquivo significa que nenhuma saída está disponível para o cron enviar por e-mail.
Sugiro usar o tee para anexar a saída ao arquivo e enviá-lo para o stdout; essa resposta - link - é muito parecida com a que você está pedindo para conseguir.
Como alternativa, siga a sugestão na primeira resposta e escreva um script de wrapper para manipular mais facilmente a saída do script e, em seguida, você pode fazer o log e ter a saída do script enviada por e-mail