Как отправить вложение по электронной почте с помощью командной строки в Linux без физического создания файла

Как отправить вложение по электронной почте с помощью командной строки в Linux без физического создания файла

Я пытаюсь отправить электронное письмо с вложением CSV, однако локально создать файл невозможно.

Есть ли способ передать содержимое (у меня содержимое хранится в переменной в памяти) в sendmail/mail таким образом, чтобы данные отображались как вложение?

решение1

Вы можете использовать mailx (пример взят изhttps://access.redhat.com/solutions/104833) и <()синтаксис bash:

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

Тот же пример с mutt:

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

все <()будет выполнено bash, он создаст для этого временный файл и предоставит его в качестве параметра для команды.

решение2

В вопросе не указана причина не создания файла. В зависимости от этой причины у вас могут быть альтернативные решения, которые позволят вам решить основную проблему другим способом, если подход, о котором вы спросили, не сработает:

  • Если есть опасения, что файл содержит конфиденциальные данные, которые вы не хотите оставлять в постоянном хранилище, вы можете записать файл на ramdisk. Будьте осторожны, чтобы ваша почтовая программа не копировала файл в каталог tmp или папку черновиков.

  • Если вас беспокоит, что файл слишком большой, чтобы поместиться в постоянное хранилище, то вы можете подумать, что получатель, вероятно, также столкнется с трудностями при открытии файла и любого промежуточного MTA. Вы можете рассмотреть другой протокол вместо почтовых протоколов.

Связанный контент