【问题标题】:mailx sending message as bin attachment [duplicate]mailx将消息作为bin附件发送[重复]
【发布时间】:2017-02-20 12:37:22
【问题描述】:

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

key = value

结果消息由 Perl 命令发出

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

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

是否有我可以发送给 mailx 的参数来阻止它执行此操作,或者有推荐的方法我转换我的值以便 mailx 正确处理它们?

提前致谢

【问题讨论】:

  • 相对于 MIME::Lite 库,使用 mailx 是否是一个硬要求?
  • 排序,因为我正在修复旧应用程序的问题,并且我希望做出最少的更改
  • 最小修复方式 => 看看stackoverflow.com/q/3120168/2139766。它建议了调整 mailx 命令行选项的方法。如果不行的话可以直接使用sendmail程序。

标签: linux perl mailx


【解决方案1】:

我今天遇到了完全相同的问题,我通过谷歌找到了这个问题。 :-)

在我的例子中,我试图通过电子邮件发送 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

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2014-10-29
    • 2014-08-09
    • 1970-01-01
    • 2017-01-06
    相关资源
    最近更新 更多