我正在尝试发送一封带有 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。您可能需要考虑使用其他协议来代替邮件协议。