Como configurar 'at' e 'sendmail' para enviar mensagens com Content-Type: text / html

0

Estou atualizando alguns programas em lote para produzir saída html em vez de texto. Os programas em lote são executados com o comando at, que por sua vez envia toda a saída para o usuário usando o comando sendmail.

Porque o comando at compõe os cabeçalhos para o e-mail que eu estou preso com a forma de indicar aos tanto o comando 'at' ou 'sendmail' que a saída do comando em lote está no formato HTML. A combinação de 'a' e 'sendmail' criar os cabeçalhos e encerrar o cabeçalho com uma quebra de linha de modo que a inclusão de informação de cabeçalho, por exemplo Tipo de Conteúdo, são considerados parte do corpo.

A minha expectativa é que, quando o e-mail é lido por um cliente moderno, o tipo de conteúdo é corretamente definido como "text / html".

Estou feliz para qualquer solução, incluindo:. Opções de linha de comando, variáveis de ambiente bash / Perl / awk / scripts, sugestões para um novo programa de execução em lote

    
por Tai Paul 14.07.2016 / 04:39

3 respostas

0

A leitura do código-fonte 'at' é um patch bastante trivial para alterar o cabeçalho de correio que o comando at cria para incluir um campo de tipo de conteúdo.

A resposta completa pode ser adicionar uma variável de ambiente, por ex. AT_CONTENT_TYPE ou um argumento de linha de comando, por exemplo -c que o comando at verifica e valida o valor contra dois valores permitidos sendo "simples" como o valor padrão e "html" como a alternativa válida.

É claro que isso tornará sua implementação não compatível com a especificação especificação POSIX para assim você se beneficiará copiando e renomeando o comando compatível com a Licença Pública Geral GNU.

    
por 17.07.2016 / 08:36
2

Envie a mensagem explicitamente do seu script, em vez de apenas imprimir a saída e confiar em at para enviar a mensagem. Escreva o HTML em um arquivo e use mutt para anexá-lo e enviar a mensagem.

Como alternativa, escreva a mensagem com cabeçalhos, estrutura MIME e tudo, e canalize-a para sendmail -t -i . Usar mutt é de longe a maneira mais fácil.

    
por 14.07.2016 / 15:33
0

Eu não acho que é possível fazer o que você está procurando. Não estou ciente de nenhuma implementação at que tenha a capacidade de, de dentro do trabalho, fazer alterações reais nos cabeçalhos das mensagens resultantes.

No entanto, você pode executar o script como um subprocesso que produz saída HTML, redirecionar essa saída para um arquivo e adicionar cabeçalhos adjacentes conforme necessário antes de passar todo o blob de texto resultante para sendmail -bm como é (e confiando em sendmail para descobrir os campos do remetente e do destinatário).

Algo como, um exemplo muito inventado:

>tempfile
echo 'From: nobody@localhost' >>tempfile
echo 'To: root@localhost' >>tempfile
echo 'Subject: list of files' >>tempfile
echo >>tempfile
ls -lh $HOME >>tempfile
echo 'Add more data here' >>tempfile
sendmail -bm <tempfile && rm -f tempfile

pode fazer aproximadamente o que você quer. (Claro que você teria que ajustar o acima para incluir tudo o que indica que a saída é HTML.)

    
por 14.07.2016 / 13:12