电子邮件发送在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"
答案 0 :(得分: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"
顺便说一下smtp
变量在我的系统中的man mailx
中没有提到,也没有在我有权访问的另一个Linux系统中提到过。但我发现它在an answer on superuser.com中提到过。也就是说,我不确定这会在man mailx
中没有提到它的系统上有效,但是如果它适用于你那么好。