Envie um e-mail HTML simples a partir da linha de comando?

3

Eu tenho uma tarefa cron que produz uma lista de recursos, data de expiração e os dias até a expiração. O relatório produz um arquivo CSV. Eu anexei isso a uma mensagem usando mutt -a report.csv .

Eu também quero incluir informações no corpo do email. Eu uso o gawk para formatá-lo em linhas limpas e adiciono isso ao corpo. Parece algo assim:

Resource                                 Expiration Date           Days  
======================================== ========================= ========

resource one                             Oct 11 2009 07:59 PM      3    
resource two                             Nov  3 2009 07:59 PM      22     
resource three has a longer name         Nov  6 2009 07:59 PM      28     
rscrc 4                                  Dec  8 2009 07:59 PM      58     
you get the point                        Dec 17 2009 07:59 PM      66     
www.blockbuster1.smartsubs.net           Dec 23 2009 07:59 PM      70     

(sim, eu falsifiquei as datas e a expiração, elas não se somam neste exemplo)

O problema é que a maioria dos destinatários não tem seus clientes de email configurados para mostrar emails em texto simples usando uma fonte de largura fixa. Então, para eles, é assim:

Resource Expiration Date Days
======================================== ========================= ========

resource one Oct 11 2009 07:59 PM 3
resource two Nov 3 2009 07:59 PM 22
resource three has a longer name Nov 6 2009 07:59 PM 28
rscrc 4 Dec 8 2009 07:59 PM 58
you get the point Dec 17 2009 07:59 PM 66
www.blockbuster1.smartsubs.net Dec 23 2009 07:59 PM 70

Existem sugestões de como formatar facilmente este texto em email para que seja forçado a uma fonte de largura fixa? Eu tenho flexibilidade para instalar novas ferramentas de linha de comando neste servidor

    
por Doug Harris 22.10.2009 / 20:45

3 respostas

2

Se você tem uma versão recente do mutt, acredito que possa fazer algo assim.

mutt -e 'set content_type="text/html"' -a file.csv [email protected] -s "subject" < index.html

index.html será o corpo html da sua mensagem.

    
por 22.10.2009 / 21:32
1

Eu diria apenas construir uma tabela html usando instruções de impressão, hacky mas funciona, eu fiz isso antes.

Menos hacky, seria usar um csv para conversores de tabela html. Aqui está um com o awk . Você pode então enviar apenas html e plaintext, e seu leitor deve usar. Você terá que procurar como fazer isso com qualquer biblioteca / programa de correio que estiver usando.

De qualquer forma, eu iria com as tabelas tentando forçar a fonte de largura de correção. Eu acho que a tabela seria mais consistente (eu não tenho nenhuma evidência real disso).

    
por 22.10.2009 / 20:47
0

Você não conseguiu envolver a coisa toda com um elemento p e um estilo in-line definidos para uma fonte monoespaçada e espaçamento pré-formatado?

    
por 22.10.2009 / 20:52