使用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 到远程服务器,例如,
但是当我尝试将命令指向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 ...