A maneira mais fácil de enviar um arquivo por e-mail via linha de comando no * nix?

10

Qual é o comando mais fácil - e de preferência o mais portátil - que posso usar para enviar por e-mail um único arquivo como anexo a um shell * nix?

Yuval A
fonte

Respostas:

11

Supondo que seja um anexo binário:

uuencode [nome do arquivo] [nome do arquivo] | mail -s [assunto] [endereço do destinatário]

Você não precisa se preocupar com o UUencoding se for apenas um arquivo de texto, por exemplo:

mail -s [assunto] [endereço do destinatário] <[nome do arquivo]

A maioria dos * NIXes possui correio e código de uu, portanto, isso deve funcionar praticamente em qualquer lugar.

RainyRat
fonte
Que tal se eu quiser o arquivo de texto como um anexo, e não no corpo da mensagem?
Yuval A
Depende - eu não acho que o correio simples do GNU possa fazer isso, então você precisará usar um cliente de correio real; pinheiro, vira-lata ou algo semelhante. Quais destes estão disponíveis para você depende de quais foram instalados pelos seus sistemas. Usando mutt, a resposta de Gavin (abaixo) funcionará perfeitamente.
21449 RainyRat
Pine é bom! Posso usá-lo via linha de comando usando a GUI textual?
Yuval A
Eu acho que é possível. Dê uma olhada em staff.washington.edu/chappa/pine/info/outgoing.html para obter mais informações.
21449 RainyRat
11

Usando mutt, você pode:

mutt -z -a <file> -s <subject> -- [email protected]

Ou, se você não quiser digitar um corpo:

mutt -z -a <file> -s <subject> -- [email protected] < /dev/null

Gavin McTaggart
fonte
vira-lata não está disponível em meus sistemas, graças qualquer maneira
Yuval A
Eu acho que você vai achar que isso vai ser uma discussão entre o que é fácil e o que é portátil. O mailx é portátil, mas não necessariamente fácil. Como o RainyRat menciona, acho que você terá que usar um MUA completo e executá-lo na linha de comando.
Gavin McTaggart
2
Eu tive que adicionar um --antes do endereço de email para fazer esses comandos funcionarem.
Autumnsault 19/03/2015
Na verdade, são necessários traços para separar o endereço de e-mail dos nomes de arquivo "- usuá[email protected]". @DoctorMohawk está correto. Tentativa de adicioná-los acima ao corpo da resposta.
Jeff Clayton
2

" sendEmail é um cliente de email SMTP leve e de linha de comando. Se você precisar enviar email de uma linha de comando, este programa gratuito é perfeito: simples de usar e rico em recursos. Foi projetado para ser usado em scripts de bash, arquivos em lotes. , Programas Perl e sites, mas é bastante adaptável e provavelmente atenderá aos seus requisitos.O SendEmail é escrito em Perl e é único, pois não requer MÓDULOS.Tem um conjunto intuitivo e flexível de opções de linha de comando, facilitando muito para aprender e usar. [Plataformas suportadas: Linux, BSD, OS X, Windows 98, Windows NT, Windows 2000 e Windows XP] "

Eu já usei isso antes e realmente gostei. Você pode anexar arquivos com a opção -a.

Clinton Blackmore
fonte
+1 - Isso foi perfeito para o que eu preciso, pois é fácil e ainda é mantido ativamente! Se você estiver em um sistema Debian, você pode apenas aptitude install sendemail. Observe que o comando é instalado como sendEmailcom um 'E' maiúsculo.
Topher Fangio
Na verdade, o tarball contém um script perl e alguns documentos. Você pode simplesmente fazer o download, extrair e executar (desde que o seu sistema possua perl). Ainda bem que você gosta.
Clinton Blackmore
1

Não posso adicionar um comentário, mas ..

  • As respostas para isso dependerão muito das quais, se houver alguma, derivada mailxsua disponível.
  • Embora o arquivo deva ser exibido sem problemas pelo MUA receptor, a canalização de uuencodenão produzirá tecnicamente um email com um anexo. Dê uma olhada na fonte do email que você recebe para ver o porquê.
Dan Carley
fonte
+1 para a verdade. Eu nem percebi que havia uma versão do mailx que podia enviar anexos (o meu certamente não). Você também está correto sobre a codificação manual de uudificação necessária com o pipeline uuencode -> mail.
Gavin McTaggart
1

Se você deseja portabilidade absoluta, pode telnetar para o servidor de correio na porta 25 e emitir comandos SMTP diretamente. Eles não são muito difíceis e devem ser muito programáveis.

Maximus Minimus
fonte
3
Você também pode escrever seu próprio servidor SMTP.
Hark
1

Um rápido Google apareceu nesta página , que descreve várias maneiras de anexar arquivos usando uma variedade de aplicativos. Alguns dos mais prevalentes -

  • uuenc8de para criar um "anexo" embutido.

  • metamail -f file-to-attach -m mime-type

  • mpack -c mime-type file-to-attach

  • vira-lata -a file-to-attach

  • Olmo -A file-to-attach

Além disso, possui links para alguns scripts de shell e um script Perl para criar e enviar a mensagem, o que provavelmente será mais do seu agrado.

ouvir
fonte
1
echo "Email body text" | mail -s "Subject of email" -a file.to.attach.txt [email protected]
Neobyte
fonte
mail: opção ilegal - a
Yuval A
1
Note que esta é uma característica mailx, certifique-se que determinado pacote é instalado
Nixar
0

Alguns anos atrás, escrevi um shell script que fez exatamente isso. Foi chamado binmail.sh. Ele usou um codificador base64 (muitos códigos-fonte podem ser encontrados no google ) e construiu anexos de acordo com a RFC1521 .

mouviciel
fonte