Linux下mail命令设置发件人、抄送时报非法字符':'错误如何解决?
报错原因
- 该报错由系统默认的
mail工具版本差异导致:如果当前系统安装的是GNU mailutils版本的mail,-a参数的作用是添加附件而非自定义邮件头,命令会将From:sender@example.com整体识别为附件文件名,其中的冒号属于文件名非法字符,因此触发报错。 - 原命令的收件人参数逻辑错误:
-c参数后接的是抄送收件人地址,主收件人地址需要放在所有参数末尾,原写法会将reciver1@example.com识别为抄送地址、reciver2@example.com识别为主收件人,与需求不符。
正确命令调整方案
首先执行mail -V即可查看当前mail工具的版本,再对应选择适配的命令:
适配GNU mailutils版本
使用--from参数指定发件人,调整后命令如下:
echo "This is the message body" | mail -s "This is the subject" --from sender@example.com -c reciver2@example.com reciver1@example.com
适配Heirloom mailx(BSD mailx)版本
该版本支持-a参数添加自定义邮件头,调整后命令如下:
echo "This is the message body" | mail -s "This is the subject" -a "From: sender@example.com" -c reciver2@example.com reciver1@example.com
参数说明
-s:指定邮件主题--from/-a "From: 发件人地址":指定发件人-c:指定抄送收件人地址- 所有参数末尾的地址为主要收件人地址
内容的提问来源于stack exchange,提问作者Raghu
相关产品推荐
相关产品推荐

