如何在 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。您可能需要考虑使用其他协议来代替邮件协议。

相关内容