Alien的博客

Zabbix报警邮件中带附件的解决方法

在使用zabbix邮件报警的时候发现邮件内容在有些邮件客户端里面不能正确的识别。
下面图中分别是foxmail、outlook、网页版客户端中收到的邮件内容

图中可以看到,只有fomail中收到的邮件内容是可以正确显示的,其他的客户端显示正文为空,并且邮件中还有附件。
下载打开邮件附件中的bin或者dat文件后发现,其实里面保存的就是邮件正文的内容。
我发送邮件用的脚本都是按照zabbix官网那样写的:https://www.zabbix.com/documentation/2.4/manual/config/notifications/media/script
后来研究了好久,最终使用更换换行符的方法解决了
解决方法就是在发送邮件的脚本中加一行命令,把邮件正文内容中”\r”全部替换为”\n”


#!/bin/bash
to=$1
subject=$2
body=$3
body=`echo $body|tr '\r' '\n'`
cat <<EOF | mail -s "$subject" "$to"
$body
EOF

———-
update:其实这种通过执行脚本发邮件的方式很不好,zabbix无法判断邮件是否发送成功。
最好的方法还是通过“管理(Administration)”-“示警媒介类型(Media types)”-“Email类型”来发送邮件,这样在“报表(Reports)”-“Action log”中就可以看到每一个邮件的发送状态了。