Como posso enviar um anexo por email a partir da linha de comando

23

É possível enviar anexos por email a partir da linha de comando?

Se possível, gostaria de algo tão simples como:

mail -a myfile.txt -t [email protected] -s "Here's my file"
    
por conorgriffin 10.10.2010 / 02:38

6 respostas

18

De todos os agentes de usuários de e-mail no repositório do Ubuntu, parece que mutt é o MUA de linha de comando que é abençoado com o Suporte de Longo Prazo.

De acordo com o manual , você pode fazer algo exatamente como:

mutt -a myfile.txt -s "Here's my file" -- [email protected]

exceto que não vai a lugar nenhum, pois também é necessário um Agente de Transferência de E-mail. Os mais populares são:

  • o venerável sendmail
  • postfix
  • exim4
  • qmail
  • nullmailer

e os únicos que a Canonical parece suportar são postfix (obrigado pela correção Steve) e exim4 .

Poder-se-ia dizer também que o xdg-email é também um bom MUA do Ubuntu, mas é uma fachada simples end que apenas executa seu MUA preferido em seu nome.

Se você gostaria de conselhos sobre qual MTA pode ser adequado para o seu uso, talvez abra outra pergunta aqui.

    
por msw 10.10.2010 / 04:16
10

Eu também tive problemas com o envio de arquivos anexados. Quando enviei um email sem anexo, ele foi bem-sucedido, mas não estava com o anexo. Este problema existia com os comandos sendemail , mutt , mail , mailx , uuencode .

Felizmente, foi resolvido de forma engraçada. Eu uso o Gmail para enviar e-mail. Você pode configurar seu Gmail para enviar e-mails através de comandos no terminal como declarado em link .

Você pode enviar um e-mail de texto usando:

mail -s "hello" [email protected] < /home/masoud/YOURFILE.txt 

mas você não pode enviar o mesmo arquivo como anexo, conforme abaixo:

mail -s "hello" [email protected] -a /home/masoud/YOURFILE.txt

ou:

mail -s "hello" -a /home/masoud/YOURFILE.txt [email protected]

Por fim, entendi que somente esse formato poderia enviar um anexo:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt [email protected]

Engraçadamente, a diferença é a existência do comando "echo".

    
por Masoud 06.02.2014 / 11:11
5

Descobri que o comando e os parâmetros foram alterados recentemente.

Se você quiser enviar seus anexos com este comando:

mail -s "your subject" [email protected] -A /your/attachment/absolute/path < /home/you/message.txt

A opção attachment deve ser -A , que é CAPITAL A .

    
por Alex 01.02.2015 / 14:02
3

Você pode querer enviar um arquivo do shell , mas de outra forma usar o Thunderbird .

Nesse caso, tente thunderbird -remote ... é útil - supondo que o thunderbird esteja normalmente em execução:

O comando abre uma janela de composição de email de uma instância do thunderbird em execução.
O endereço "De" é o seu endereço padrão configurado no thunderbird.
Além disso, as configurações de conta existentes são usadas, não há necessidade de configuração separada.

Para um email endereçado a [email protected] , com assunto "S", corpo "B" e um anexo /some/absolute/file.txt , o comando é

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='/some/absolute/file.txt')"

Existem dois problemas:

O arquivo anexado precisa ser fornecido por um caminho absoluto , o que é entediante na prática. Isso pode ser feito usando readlink -f para resolver caminhos relativos:

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='$(readlink -f file.txt)')"

Além disso, o comando é longo. Use um script de shell ou função de shell, com quatro argumentos:

thunderbird-compose () {
    thunderbird -remote "xfeDoCommand(composeMessage,subject='',to='',body='',attachment='$(readlink -f )')"
}

Com esta função, o comando se torna legível:

thunderbird-compose 'Some Subject' [email protected] 'Body of message' file1

abre uma janela do Thunderbird "Write" com o anexo , e De, To, Subject e corpo do texto são preenchidos. Pode ser editado antes de ser enviado.

    
por Volker Siegel 26.09.2014 / 03:26
1
O pacote

heirloom-mailx no debian fornece o comando mailx para enviar facilmente anexos mime. seguintes obras para mim;

 mailx -a attachment.zip -s subject [email protected]
    
por Furkan Mustafa 02.04.2015 / 06:30
0

Desejo adicionar outra resposta que é usada para adicionar o texto do corpo junto com o anexo. Felicidades!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- [email protected]
    
por Anandu M Das 25.09.2014 / 12:30