Como enviar um anexo de e-mail usando linha de comando no Linux sem criar fisicamente o arquivo

Como enviar um anexo de e-mail usando linha de comando no Linux sem criar fisicamente o arquivo

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

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

Responder1

Você pode usar mailx (exemplo retirado dehttps://access.redhat.com/solutions/104833) e <()sintaxe bash:

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

O mesmo exemplo com vira-lata:

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

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

Responder2

A pergunta não indica o motivo da não criação de um arquivo. Dependendo desse motivo, você pode ter soluções alternativas que lhe permitam resolver o problema subjacente de uma maneira diferente se a abordagem que você perguntou não funcionar:

  • Se a preocupação for que o arquivo contenha dados confidenciais que você não deseja deixar no armazenamento persistente, você poderá gravar o arquivo em um disco RAM. Tenha cuidado para que seu programa de e-mail não copie o arquivo para um diretório tmp ou pasta de rascunho.

  • Se sua preocupação é que o arquivo seja muito grande para caber em seu armazenamento persistente, considere que o destinatário 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.

informação relacionada