Como enviar um anexo de email usando a linha de comando no Linux sem criar fisicamente o arquivo

3

Estou tentando enviar um e-mail com um anexo de CSV. No entanto, não é possível criar o arquivo localmente.

Existe alguma maneira de canalizar o conteúdo (eu tenho o conteúdo em uma variável na memória), para o sendmail / mail de uma forma que os dados apareceriam como um anexo?

    
por user2360915 13.06.2016 / 04:52

2 respostas

1

Você pode usar o mailx (exemplo retirado do link ) e bash <() syntax:

echo "MESSAGE BODY" | mailx -s "SUBJECT" -a <(echo something | sed 's/thing/thong/g') [email protected]

O mesmo exemplo com o mutt:

echo "MESSAGE BODY" | mutt -s "SUBJECT" -a <(echo something | sed 's/thing/thong/g') -- [email protected]

tudo em <() será executado pelo bash, ele criará um arquivo temporário para ele e o fornecerá como um parâmetro para o comando.

    
por 13.06.2016 / 09:09
-3

A pergunta não indica o motivo para não criar um arquivo. Dependendo desse motivo, você pode ter soluções alternativas que permitem resolver o problema subjacente de uma maneira diferente se a abordagem que você fez não der certo:

  • Se a preocupação é que o arquivo contém dados confidenciais que você não deseja deixar em armazenamento persistente, é possível gravar o arquivo em um ramdisk. Tenha cuidado para que seu programa de e-mail não copie o arquivo para um diretório tmp ou pasta de rascunho.

  • Se a sua preocupação é que o arquivo é muito grande para caber no armazenamento persistente, convém considerar que o receptor provavelmente também terá dificuldade em abrir o arquivo e qualquer MTA intermediário. Você pode querer considerar um protocolo diferente em vez dos protocolos de correio.

por 13.06.2016 / 11:28