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.");
}
我的问题与 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.");
}