Linux mailx将邮件作为bin附件发送
我有一个Perl脚本,它应该发送一封电子邮件,内容由表单的行组成Linux mailx将邮件作为bin附件发送,linux,perl,mailx,Linux,Perl,Mailx,我有一个Perl脚本,它应该发送一封电子邮件,内容由表单的行组成 key = value 结果消息由Perl命令发出 `echo "$msg" | mailx -r $WEBMASTER_EMAIL -s "$field{'subject'}" $field{'email'}\n`; 当值为标准ASCII时,此功能可以正常工作。但是,当扩展字符是任何值的一部分时,它不起作用。电子邮件不包含文本,而是包含包含键值对的ATT000001.bin文件 是否有一个参数可以发送给mailx来阻
key = value
结果消息由Perl命令发出
`echo "$msg" |
mailx -r $WEBMASTER_EMAIL -s "$field{'subject'}" $field{'email'}\n`;
当值为标准ASCII时,此功能可以正常工作。但是,当扩展字符是任何值的一部分时,它不起作用。电子邮件不包含文本,而是包含包含键值对的ATT000001.bin文件
是否有一个参数可以发送给mailx来阻止它这样做,或者有一个建议的方法来转换我的值以便mailx正确处理它们
提前感谢我今天遇到了完全相同的问题,我通过谷歌找到了这个问题。:-) 在我的例子中,我试图通过电子邮件发送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`;
echo "$msg" | perl -p -e 's/\r\n/\n/g; s/\r/\n/g' | mailx ...
或者,从shell脚本(我的案例)中,尝试以下操作:
$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`;
echo "$msg" | perl -p -e 's/\r\n/\n/g; s/\r/\n/g' | mailx ...
来自Redhat的更多信息:与MIME::Lite library相比,使用mailx是不是很难?等等,因为我正在解决旧应用程序的问题,我想尽量减少更改minimum fixes way=>请看一看。它提供了调整mailx命令行选项的方法。如果它不起作用,那么use可以直接使用
sendmail
程序。