我有Ubuntu服务器(16.04)+ Nagios,我也创建了一个脚本,每晚制作一个屏幕截图(Nagios状态)并将此屏幕截图发送给两个收件人。但是发生问题,我收到带图像的邮件(嵌入身体,而不是附件) - 没关系 - 但是我的朋友收到了带有损坏图像的相同邮件(附件中的空白文件)。 有什么建议,如何解决这个问题? 脚本代码:
extract
答案 0 :(得分:2)
MIME标头和base64图像数据之间缺少换行符。
在here文档中的命令替换中运行base64
可能会在输出中产生过长的行。尝试(粗糙的伪代码)
( cat <<EOF
From: blah blah ...
Subject: blah blah ...
:
--XYZ
Content-description: image/png; name=etc etc
EOF
base64 file
printf "\n--XYZ--\n" ) | sendmail -oi -t
(我假设您在脚本顶部附近PATH=/usr/sbin:$PATH
,因此您无需对sendmail
的路径进行硬编码。)
如果改进的MIME知识不是个人发展目标,可能使用一个知道如何正确执行此操作的程序。很多人使用mutt
代表他们发送邮件,而不必担心如何正确地做到这一点。
除了风格外,多次运行$(date +%F)
似乎很笨拙。只需运行一次并在变量中捕获输出。 (在病理案例中,脚本在午夜左右运行,并且您在消息的不同部分得到不同的日期!)