Cómo enviar un archivo adjunto de correo electrónico usando la línea de comando en Linux sin crear físicamente el archivo

Cómo enviar un archivo adjunto de correo electrónico usando la línea de comando en Linux sin crear físicamente el archivo

Estoy intentando enviar un correo electrónico con un archivo adjunto CSV, sin embargo, no es posible crear el archivo localmente.

¿Hay alguna forma de canalizar el contenido (tengo el contenido en una variable en la memoria) para enviar correo/correo de manera que los datos aparezcan como un archivo adjunto?

Respuesta1

Puedes usar mailx (ejemplo tomado dehttps://access.redhat.com/solutions/104833) y <()sintaxis de bash:

echo "MESSAGE BODY" | mailx -s "SUBJECT" -a <(echo something | sed 's/thing/thong/g') [email protected]

Mismo ejemplo con perro callejero:

echo "MESSAGE BODY" | mutt -s "SUBJECT" -a <(echo something | sed 's/thing/thong/g') -- [email protected]

todo <()será ejecutado por bash, creará un archivo temporal y lo proporcionará como parámetro para el comando.

Respuesta2

La pregunta no indica el motivo por el que no se crea un archivo. Dependiendo de ese motivo, es posible que tengas soluciones alternativas que te permitan resolver el problema subyacente de una manera diferente si el enfoque que preguntaste no funciona:

  • Si lo que le preocupa es que el archivo contiene datos confidenciales que no desea dejar en el almacenamiento persistente, puede escribir el archivo en un disco ram. Tenga cuidado de que su programa de correo no copie el archivo a un directorio tmp o carpeta de borrador.

  • Si le preocupa que el archivo sea demasiado grande para caber en su almacenamiento persistente, entonces debería considerar que el receptor probablemente también tendrá dificultades para abrir el archivo y cualquier MTA intermediario. Es posible que desee considerar un protocolo diferente en lugar de los protocolos de correo.

información relacionada