我正在尝试使用发送电子邮件。我想要的是我收到一封包含命令输出的电子邮件ls
,但在该输出之上我想要一个带有一些解释的自定义文本。如果我尝试-u
它会覆盖我的ls
命令输出。
我使用的命令:
ls home/ec2-user/client_certs/ | grep '.ovpn' | sendemail -o tls=yes -f Emailthatsendmail@company -t Myemail@company -s smtp.office365.com:587 -xu Emailthatsend@company -xp passwordemailthatsend -u "[Encrypted] Access to VPN Service" -m Users who have access to the VPN service, if something is wrong contact EMAILofCompany
为了隐私,我更改了电子邮件和密码。
结果:我收到一封加密邮件,其主题和正文是:有权访问 vpn 服务的用户,如果出现问题,请联系 EMAILofCompany
该ls
命令无处可寻,但如果我不使用
-m Users who have access to the VPN service, if something is wrong contact EMAILofCompany
我收到一封邮件,我可以在其中看到命令的输出,但看不到自定义消息,因为我删除了它。
我正在使用 Amazon Linux 2 AMI
SendEmail版本:sendemail-1.56
答案1
将您的自定义消息放入文件中,例如:/some/path/custom-message.txt
然后:
(cat /some/path/custom-message.txt; ls -d home/ec2-user/client_certs/*?ovpn*) | sendemail -o tls=yes -f Emailthatsendmail@company -t Myemail@company -s smtp.office365.com:587 -xu Emailthatsend@company -xp passwordemailthatsend -u "[Encrypted] Access to VPN Service"
理由:
使用该-m
选项,sendemail
从选项参数中获取消息并完全忽略管道标准输入。您不希望这样,所以不要使用该-m
选项。相反,通过添加括号,括号内的所有命令/管道的输出都会sendemail
按指定的顺序进入 的标准输入。