La forma más fácil de enviar archivos por correo electrónico a través de la línea de comandos en * nix?

10

¿Cuál es el comando más fácil, y preferiblemente el más portátil, que puedo usar para enviar un solo archivo por correo electrónico como un archivo adjunto a * nix shell?

Yuval A
fuente

Respuestas:

11

Asumiendo que es un archivo adjunto binario:

uuencode [nombre de archivo] [nombre de archivo] | mail -s [asunto] [dirección del destinatario]

No necesita molestarse con la codificación UUen si es solo un archivo de texto, por ejemplo:

mail -s [asunto] [dirección del destinatario] <[nombre de archivo]

La mayoría de * NIX tienen correo y código de usuario, por lo que esto debería funcionar prácticamente en cualquier lugar.

RainyRat
fuente
¿Qué tal si quiero el archivo de texto como un archivo adjunto y no en el cuerpo del mensaje?
Yuval A
Depende: no creo que el correo GNU simple pueda hacer eso, por lo que necesitará usar un cliente de correo real; pino, perro callejero o algo similar. Cuáles de estos están disponibles para usted depende de cuáles han instalado sus sistemas. Usando mutt, la respuesta de Gavin (abajo) funcionará bien.
RainyRat
¡El pino es bueno! ¿Puedo usarlo a través de la línea de comandos con el uso de la GUI textual?
Yuval A
Creo que eso es factible. Eche un vistazo a staff.washington.edu/chappa/pine/info/outgoing.html para obtener más información.
RainyRat
11

Usando mutt, puedes:

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

O, si no quieres escribir un cuerpo:

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

Gavin McTaggart
fuente
mutt no está disponible en mis sistemas, gracias de todos modos
Yuval A
Creo que vas a encontrar que esto va a ser un cambio entre lo que es fácil y lo que es portátil. mailx es portátil, pero no necesariamente fácil. Como menciona RainyRat, creo que tendrá que ir con un MUA completo y ejecutarlo desde la línea de comandos.
Gavin McTaggart
2
Tuve que agregar un --antes de la dirección de correo electrónico para que estos comandos funcionen.
Autumnsault
De hecho, se necesitan guiones para separar la dirección de correo electrónico de los nombres de archivo "- [email protected]", @DoctorMohawk es correcto. Intentando agregarlos arriba al cuerpo de la respuesta.
Jeff Clayton el
2

" sendEmail es un cliente de correo electrónico SMTP liviano y de línea de comandos. Si necesita enviar correos electrónicos desde una línea de comandos, este programa gratuito es perfecto: fácil de usar y rico en funciones. Fue diseñado para usarse en scripts de bash, archivos por lotes , Programas y sitios web de Perl, pero es bastante adaptable y es probable que cumpla con sus requisitos. SendEmail está escrito en Perl y es único en el sentido de que NO requiere MÓDULOS. Tiene un conjunto intuitivo y flexible de opciones de línea de comandos, lo que lo hace muy fácil para aprender y usar. [Plataformas compatibles: Linux, BSD, OS X, Windows 98, Windows NT, Windows 2000 y Windows XP] "

Lo he usado antes y realmente me gustó. Puede adjuntar archivos con la opción -a.

Clinton Blackmore
fuente
+1: ¡Esto fue perfecto para lo que necesito, ya que es fácil y aún se mantiene activamente! Si está en un sistema Debian, puede simplemente aptitude install sendemail. Tenga en cuenta que el comando se instala como sendEmailcon una 'E' mayúscula.
Topher Fangio
En realidad, el tarball contiene un script perl y un par de documentos. Puede descargarlo, extraerlo y ejecutarlo (siempre que su sistema tenga perl). Aunque me alegro de que te guste.
Clinton Blackmore
1

No puedo agregar un comentario, pero ...

  • Las respuestas a esto dependerán en gran medida de qué derivado suyo, si lo hay, mailxtiene disponible.
  • Si bien el MUA receptor debe mostrar el archivo sin problemas, uuencodetécnicamente no se generará un correo electrónico con un archivo adjunto. Eche un vistazo a la fuente del correo electrónico que recibe para ver por qué.
Dan Carley
fuente
+1 para la verdad. Ni siquiera me di cuenta de que había una versión de mailx que podía enviar archivos adjuntos (la mía ciertamente no). También está en lo correcto acerca de la codificación uude manual requerida con el código uuencode -> mail pipeline.
Gavin McTaggart
1

Si desea una portabilidad absoluta, puede hacer telnet en su servidor de correo en el puerto 25 y emitir comandos SMTP directamente. No son demasiado difíciles, y debería ser muy programable.

Maximus Minimus
fuente
3
También puede escribir su propio servidor SMTP.
Hark
1

Un rápido Google apareció en esta página , que describe una variedad de formas de adjuntar archivos usando una variedad de aplicaciones. Un par de los más frecuentes:

  • uuenc8de para hacer un "archivo adjunto" en línea.

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

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

  • chucho -a file-to-attach

  • Olmo -A file-to-attach

Además, tiene enlaces a un par de scripts de shell y un script de Perl para elaborar y enviar el mensaje, lo que probablemente será más de su agrado.

escuchar con atención
fuente
1
echo "Email body text" | mail -s "Subject of email" -a file.to.attach.txt [email protected]
Neobyte
fuente
mail: opción ilegal - a
Yuval A
1
tenga en cuenta que esta es una característica de mailx, asegúrese de que esté instalado un paquete en particular
niXar
0

Hace algunos años, escribí un script de shell que hizo exactamente eso. Se llamaba binmail.sh. Utilizó un codificador base64 (se pueden encontrar muchos códigos fuente con google ) y construyó archivos adjuntos de acuerdo con RFC1521 .

Mouviciel
fuente