0

电子邮件发送在 perl 中工作,但在 shell 中。我的 shell 脚本对吗?

如果 Perl 脚本有效,看起来服务器 SMTP conf 是正确的。我怎样才能找出导致电子邮件在 shell 脚本中不起作用的原因?

My perl script:

#!/usr/bin/perl -w

use strict;
use warnings;
use Net::SMTP;

sub sendmail();

my $email       = 'abc@xyz.com';
my $smtp_server = '10.233.1.199';

sub sendmail() {
    my $s = Net::SMTP->new($smtp_server);
    $s->mail($email);
    $s->to($email);
    $s->data();
    $s->datasend("Subject: Test");
    $s->datasend("\n");
    $s->datasend("Testing\n");
    $s->dataend();
    $s->quit;
}
sendmail();

Shell script:

  #!/bin/sh

SUBJECT="some subject"
smtp=10.233.1.199
EMAIL=abc@xyz.com
echo "some message" | mailx -s "$SUBJECT" "$EMAIL"
4

1 回答 1

0

您必须导出smtp变量,否则mailx将看不到它。像这样:

#!/bin/sh

SUBJECT="some subject"
export smtp=10.233.1.199
EMAIL=abc@xyz.com
echo "some message" | mailx -s "$SUBJECT" "$EMAIL"

顺便说一句,在我的系统和我可以访问的另一个 Linux 系统中smtp都没有提到该变量。但我发现它在 superuser.com 上的答案man mailx中提到。也就是说,我不确定这是否适用于未提及的系统,但如果它适用于您,那就太好了。man mailx

于 2013-07-10T03:52:08.360 回答