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.