通过 ssh + 附件从远程文件发送包含正文/消息的邮件

通过 ssh + 附件从远程文件发送包含正文/消息的邮件

使用mail(from mailutils),这是发送包含 HTML 消息的电子邮件的唯一方法附件是包含来自文件的消息,如下所示:

mail \
--content-type=text/csv --attach=/tmp/filename.csv \
-a "From: [email protected]" \
-s "An HTML Email with Attachment, Yay!" \
--content-type=text/html \
[email protected] < /tmp/filename.txt

但是我需要做的是filename.txt从远程服务器获取最后一个文件(其中包含 html 的文件)。

我可以使用密钥轻松 ssh 到远程服务器,例如,

ssh [email protected]

但是当我尝试将命令指向mail远程服务器上的该位置时,我收到“没有这样的文件或目录”的提示,但毫无疑问该文件就在那里。

mail \
--content-type=text/csv --attach=/tmp/filename.csv \
-a "From: [email protected]" \
-s "An HTML Email with Attachment, Yay!" \
--content-type=text/html \
[email protected] < ssh [email protected]:/tmp/filename.txt

我尝试了我能想到的所有反斜杠和管道组合,但仍然无法让它发挥作用。

顺便说一句,是的,当通过 ssh 以远程服务器用户身份登录时,本地服务器的用户能够查看、打开和编辑远程文件。

所以

ssh [email protected]
nano /tmp/filename.txt

工作正常。

有任何想法吗?

目前,我只是在发送电子邮件之前将文件复制到另一台服务器,但我宁愿不这样做。我更喜欢一行代码。

我在两台服务器上都使用 Ubuntu 18.04。使用带有 mailutils 的 postfix。

答案1

尝试更换

... < ssh [email protected]:/tmp/filename.txt

经过

... <<< `ssh [email protected] cat /tmp/filename.txt`

ssh 只能执行远程命令,/tmp/filename.txt 不是命令,因此出现错误。

或者,您可以使用管道

ssh [email protected] cat /tmp/filename.txt | mail ...

相关内容