脚本中mail命令执行效果与命令行不一致的问题求助
脚本中mail命令执行效果与命令行不一致的问题求助
我遇到一个奇怪的问题:同样一条mail命令,在Unix终端直接运行时完全符合预期,但把它放到Shell脚本里执行,效果就完全不一样了。
我原本预期邮件在Outlook中会显示为高优先级(通过X-Priority: 1实现),同时附件正常显示、邮件正文格式正确。但脚本执行后,邮件变成纯文本格式,附件被直接拼到正文内容里,而且优先级也变成了普通级别,完全达不到预期效果。实在找不到问题出在哪,恳请大家帮忙分析!
测试的Shell脚本1
#!/bin/sh echo "Message Body" | mail -r "sender@mycom.com" -c "ccrecipient@mycom.com" -s "$(echo -e "Message Subject\nX-Priority: 1")" -a "logFile.log" "torecipient@mycom.com"
测试的Shell脚本2
#!/bin/bash echo "Message Body" | /usr/bin/mail -r "sender@mycom.com" -c "ccrecipient@mycom.com" -s "$(echo -e "Message Subject\nX-Priority: 1")" -a "logFile.log" "torecipient@mycom.com"
命令行直接执行的命令
echo "Message Body" | mail -r "sender@mycom.com" -c "ccrecipient@mycom.com" -s "$(echo -e "Message Subject\nX-Priority: 1")" -a "logFile.log" "torecipient@mycom.com"
进一步研究的细节/观察
在实际业务场景中,我的邮件主题包含变量赋值,格式类似:MyApp : ${HostName} : Restarted\nX-Priority: 1,其中HostName是脚本里提前定义的变量。我做了几组测试:
- 如果把变量换成硬编码值(比如
MyApp : myserver : Restarted\nX-Priority: 1),命令行和脚本的执行效果就完全一致了; - 如果在命令行里保留变量(此时变量未定义),邮件优先级依然是正常的高优先级,只是主题会变成
MyApp : : Restarted,这符合预期; - 我尝试在脚本里使用一个未定义的变量,结果还是不行,优先级依然是普通级别,附件依然被拼到正文里。
希望这些细节能帮大家更精准地定位问题,再次感谢各位的帮助!
备注:内容来源于stack exchange,提问作者akpuvvada
相关产品推荐
相关产品推荐

