You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

脚本中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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:57:36