Perl 发送电子邮件作为附件

Perl sends email as attachment

我的问题与 mailx sending message as bin attachment 类似,但是 none 列出的解决方案对我有用。

相反,即使我删除了所有换行符,电子邮件始终作为附件发送。

下面是我的 Perl 代码:

my $cmd = "/usr/bin/mailx $Email_SendCharsets -s \"$hostname: $subject\" $Email_Auth -r $retAddr $addresses";
my $rc = open3(\*CHLD_IN, \*CHLD_OUT, \*CHLD_ERR, $cmd);
if ($rc != 0)
{
    print CHLD_IN $message;
    close CHLD_IN;
    ... other things here ...
}
... other things here ...

知道为什么会这样吗?

PS: 我是 运行 RHEL 上 Perl 5.10 的代码 8.x

最后我只用 Net::SMTP 模块实现了电子邮件的发送。代码在这里,如果有人需要的话:

if (my $smtp = Net::SMTP->new($smtpHost, Debug => $Debug)) {
    if($smtp->auth($username, $password)) {
        $smtp->mail($retAddr);
        $smtp->to(@recipients);

        $smtp->data();
        $smtp->datasend("To: $recipientsString\n");
        $smtp->datasend("Subject: $hostname: $subject\n");
        $smtp->datasend("Content-Type: text/plain; charset=$charset\n");
        $smtp->datasend("\n");
        $smtp->datasend("$message\n");
        $smtp->dataend();
    }

    my $rc = $smtp->ok();
    if($rc == 0) {
        my $errorMessage = $smtp->message();
        LogError("Mail error: $errorMessage. Msg subject: $subject.");
    }
    $smtp->quit();

    return $rc;
} else {
    LogError("SMTP connection failed. Msg subject: $subject.");
}