enviando arquivo usando sendmail

5

Eu tenho um script de shell que usa a função sendmail para enviar e-mail, o código é o seguinte

mailalert(){
sendmail -F Sender-Name -it <<END_MESSAGE
To: [email protected]
Subject: Subject

Message
END_MESSAGE
}

Ele é executado sempre que eu chamo essa função. Agora eu tenho um arquivo de texto que eu quero enviar usando sendmail como anexo ou como mensagem no e-mail que ele envia. Como eu posso fazer isso? Eu tentei muitos truques, mas nada parece funcionar. Por favor ajude.

    
por Tarun 09.10.2013 / 15:32

5 respostas

1

Um pouco estranho, mas usei uma abordagem diferente ao usar uuencode , mas o cursor ficou preso em begin 644 /path/to/file , então usei cat para enviar meu arquivo no corpo da mensagem.

file=/path/to/file
mailalert(){
sendmail -F Sender-Name -it <<END_MESSAGE
To: [email protected]
Subject: Subject

$(cat $file)
END_MESSAGE
}

O código acima funcionou perfeitamente, mas quando vi a mensagem no meu navegador, tudo bem. Mas quando eu vi no Thunderbird não foi mostrado corretamente. Era como uma espécie de codificação.

Então, estou mantendo essa questão em aberto até que não encontre a solução correta por enquanto.

    
por Tarun 10.10.2013 / 08:03
3

Digite uuencode /path/filename.txt | sendmail -s "subject" user@domain no seu terminal para enviar e-mails.

  • Substitua "caminho" pelo caminho do diretório real no qual o arquivo a ser anexado está localizado.
  • Substitua "filename.ext" pelo nome e extensão do arquivo.
  • Substitua "assunto" pela linha de assunto que você deseja que o e-mail tenha.
  • Substitua "usuário @ domínio" pelo endereço de e-mail do destinatário.

este é o processo real para enviar email com anexo.

adicione uuencode /path/filename.txt antes do comando sendmail no seu script. Quero dizer modificá-lo como

mailalert(){
uuencode /path/filename.txt
sendmail -F Sender-Name -it <<END_MESSAGE
To: [email protected]
Subject: Subject

Message
END_MESSAGE
}

espero que possa ajudar você.

    
por Ten-Coin 09.10.2013 / 15:51
0

Depois de pesquisar várias páginas inúteis da MAN e pesquisar no Google, finalmente cheguei a essa solução:
Arquivo a ser enviado: test.csv

No Ubuntu você terá o uuencode (AIX), fornecido pelo pacote sharutils , que pode ser necessário instalar (o equivalente no Redhat é mutt ).

uuencode test.csv test.csv | mail -v -s "Subject test" -r [email protected] [email protected]

O maior problema foi combinar sendmail e anexo e ao mesmo tempo definir o assunto. Também no AIX eu não tenho a opção -a attachment , como sugere a página Man do LINUX.

Você também pode usar mailx em vez de mail com exatamente os mesmos parâmetros.

    
por Petefram 01.12.2017 / 11:14
0

Ao enviar e-mail, mesmo a partir da linha de comando, é melhor usar um programa que foi projetado para essa finalidade, em vez de chamar sendmail diretamente. Um bom cliente de e-mail de linha de comando geral é mutt ; em particular, ele tem um sinalizador de linha de comando para anexar arquivos, o que evita o uso pesado de uuencode :

echo Test | mutt -s Test -a image.jpg -- [email protected]

Como de costume, consulte man mutt para informações de uso.

    
por fkraiem 01.12.2017 / 12:00
0

Eu criei o script abaixo para anexar um arquivo CSV. O arquivo está sendo gerado, mas está truncando o nome de linha / coluna de cabeçalho de CSV incorretamente e também há mais um arquivo que está sendo anexado com o email, ou seja, 'ATT0001.txt' com todos os emails. Alguma coisa errada que você possa descobrir aqui?

SCRIPT

(
echo "From:";
echo "To:";
echo "Subject:";
echo "MIME-Version: 1.0";
echo "Content-Type:multipart/mixed; boundary=\"B835649000072104Jul07\"";

echo "--B835649000072104Jul07";
echo "Content-Type: text/html; charset=\"UTF-8\"";
echo "Content-Transfer-Encoding: 7bit";
echo "Content-Disposition: inline";
echo "";
echo "";

echo "--B835649000072104Jul07";
echo "Content-Type: text/csv";
echo "Content-Transfer-Encoding: base64";
echo "Content-Disposition: attachment; filename=\"\"";
base64 ""

echo "--B835649000072104Jul07";
) | sendmail -t
    
por Amol Aranke 08.03.2018 / 14:59