mailx作为bin附件发送消息

时间:2017-02-20 12:37:23

标签: linux perl mailx

我有一个Perl脚本应该发送一封电子邮件,内容由表单行组成

key = value

结果消息由Perl命令发送出去

`echo "$msg" | 
   mailx -r $WEBMASTER_EMAIL -s "$field{'subject'}" $field{'email'}\n`;

当值为标准ASCII时,此方法正常。但是,当扩展字符是任何值的一部分时,它不起作用。电子邮件包含一个包含键值对的ATT000001.bin文件,而不是文本。

我是否可以向mailx发送一个参数来阻止它执行此操作,或者建议我转换我的值以便mailx正确处理它们?

提前致谢

1 个答案:

答案 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