我正在嘗試發送一封帶有 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。您可能需要考慮使用不同的協定而不是郵件協定。