Я пытаюсь отправить электронное письмо с вложением 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. Вы можете рассмотреть другой протокол вместо почтовых протоколов.