Ubuntu Linux系统。发送带有嵌入图像的电子邮件

时间:2017-12-04 11:46:34

标签: email ubuntu sendmail

我有Ubuntu服务器(16.04)+ Nagios,我也创建了一个脚本,每晚制作一个屏幕截图(Nagios状态)并将此屏幕截图发送给两个收件人。但是发生问题,我收到带图像的邮件(嵌入身体,而不是附件) - 没关系 - 但是我的朋友收到了带有损坏图像的相同邮件(附件中的空白文件)。 有什么建议,如何解决这个问题? 脚本代码:

extract

1 个答案:

答案 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)似乎很笨拙。只需运行一次并在变量中捕获输出。 (在病理案例中,脚本在午夜左右运行,并且您在消息的不同部分得到不同的日期!)