我有一个Perl脚本应该发送一封电子邮件,内容由表单行组成
key = value
结果消息由Perl命令发送出去
`echo "$msg" |
mailx -r $WEBMASTER_EMAIL -s "$field{'subject'}" $field{'email'}\n`;
当值为标准ASCII时,此方法正常。但是,当扩展字符是任何值的一部分时,它不起作用。电子邮件包含一个包含键值对的ATT000001.bin文件,而不是文本。
我是否可以向mailx发送一个参数来阻止它执行此操作,或者建议我转换我的值以便mailx正确处理它们?
提前致谢
答案 0 :(得分:0)
我今天也遇到了同样的问题,我通过Google找到了这个问题。 :-)
就我而言,我试图通过电子邮件发送curl命令的输出,该命令不幸地混合了\r\n
和\n
。结果,mailx
将内容视为二进制文件,并进行了奇怪的文件附件操作-ATT000001.bin
。
假设您可以修改Perl脚本,请尝试以下操作:
$msg =~ s/\r\n/\n/g; # convert Windows newlines to UNIX newlines
$msg =~ s/\r/\n/g; # convert bare carriage returns to UNIX newlines
`echo "$msg" |
mailx -r $WEBMASTER_EMAIL -s "$field{'subject'}" $field{'email'}\n`;
或者,从shell脚本(以我的情况为例),尝试以下操作:
echo "$msg" | perl -p -e 's/\r\n/\n/g; s/\r/\n/g' | mailx ...
来自Redhat的更多信息:https://access.redhat.com/solutions/1136493