如何在 Linux 中使用命令列發送電子郵件附件而不實際建立文件

如何在 Linux 中使用命令列發送電子郵件附件而不實際建立文件

我正在嘗試發送一封帶有 CSV 附件的電子郵件,但是無法在本地創建該文件。

有沒有什麼方法可以透過管道傳輸內容(我將內容儲存在記憶體中的變數中),以資料顯示為附件的方式發送郵件/郵件?

答案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。您可能需要考慮使用不同的協定而不是郵件協定。

相關內容