ssmtp [email protected] < file.log 不起作用。正文为空白

ssmtp [email protected] < file.log 不起作用。正文为空白

我正在运行一个简单的 rsync 脚本,其中我将 stdout 和 stderr 记录到两个不同的文件 rsync_stdout.log 和 rsync_stderr.log。

当我尝试使用以下命令通过电子邮件发送 rsync_stderr.log 的内容时:

echo $(cat rsync_stderr.log) | ssmtp [email protected]

我收到一封空白的电子邮件正文,但是当我这样做时:

echo $(cat rsync_stdout.log) | ssmtp [email protected]

然后我就可以在电子邮件正文中毫无问题地记录我的标准输出。

这和 rsync 的 stderr 输出文件有关吗?我试过了所有办法,但就是不行。

我以详细方式运行 ssmtp:

[<-] 250 2.1.5 OK b48smxxx70wrb.1 - gsmtp
[->] DATA
[<-] 354  Go ahead b48smxxxxxx70wrb.1 - gsmtp
[->] Received: by XXXNAS (sSMTP sendmail emulation); Tue, 19 Dec 2017 01:14:47 +0100
[->] From:"XXXNAS" <XXXNAS>>
[->] Date: Tue, 19 Dec 2017 01:14:47 +0100
[->] rsync: delete_file: unlink(.AppleDB/log.0000000001) failed: Permission denied (13)
[->] rsync: delete_file: unlink(.AppleDB/lock) failed: Permission denied (13)
[->] rsync: delete_file: unlink(.AppleDB/db_errlog) failed: Permission denied (13)
[->] rsync: delete_file: unlink(.AppleDB/cnid2.db) failed: Permission denied (13)
[->] rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) 
[->] [sender=3.1.2]
[->] 
[->] .
[<-] 250 2.0.0 OK 1513642487 b48sxxxxxxrb.1 - gsmtp
[->] QUIT
[<-] 221 2.0.0 closing connection b4xxxxxwrb.1 - gsmtp

因此我可以看到正在发送的文本,但电子邮件的正文却是空白的。

我也尝试过 ssmtp[电子邮件保护]< rsync_stderr.log但它也不起作用。

答案1

那么,这两个日志有什么区别呢?你只要显示其中一个就行了。

我相信该日志中的“:”字符在 SMTP 的服务器端被视为控制字符。您需要在邮件正文前添加“\n”

答案2

在用户 almendrico 将我引向这条路径后,我使用了:

sed 's/[\:]//g'删除该:字符。

不是很优雅但是有效。

相关内容