【发布时间】:2013-07-07 16:19:21
【问题描述】:
电子邮件发送在 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"
【问题讨论】:
-
Shell 脚本看起来没有错误。但是假设您的示例代码中有虚拟数据,您的变量的实际值可能存在问题。我很惊讶您的
smtp变量有任何影响。可以导出吗?此外,All Caps 更为典型。或完全注释掉。查看邮件代理是否发回了错误响应?mail。祝你好运。 -
是的,导出成功了。谢谢!!
标签: perl shell email unix scripting