【问题标题】:Sendmail works in perl but not in CRONSendmail 在 perl 中有效,但在 CRON 中无效
【发布时间】:2013-08-07 02:17:45
【问题描述】:

我有一个由 cron 作业执行的 perl 脚本。在脚本结束时,它会发送一封电子邮件让我知道它已完成。当我通过命令行运行脚本时,它运行良好。当我通过 cron 运行它时,一切正常,除了我从未收到电子邮件。我正在使用 SENDMAIL 发送电子邮件。我没有root访问权限。我是标准用户。有什么想法吗?

这是我用于 SENDMAIL 的脚本部分。

my $sendmail = "/usr/lib/sendmail -t";
my $to = "To: ". "me\@test.com\n";
my $from     = "From: SUCCESS\@test.com\n";
my $reply_to = "Reply-to: me\@test.com\n";
my $content = "Updated the File\n";
my $subject = "Subject: SUCCESS \n";
my $cc = "";

open(SENDMAIL, "|$sendmail") or die "Cannot open $sendmail: $!";
print SENDMAIL $to;
print SENDMAIL $cc;
print SENDMAIL $from;
print SENDMAIL $reply_to;
print SENDMAIL $subject;
print SENDMAIL "Content-type: text/plain\n\n";
print SENDMAIL $content;
close(SENDMAIL);

【问题讨论】:

  • 在你的 crontab 中设置MAILTO,你的脚本不需要知道如何发送邮件。

标签: perl cron sendmail


【解决方案1】:

发送邮件的路径是否正确? Cron 不了解您的环境,请尝试使用完整路径。在 Ubuntu 中它会是 '/usr/sbin/sendmail',显然它可能会因您的发行版而异。

【讨论】:

    【解决方案2】:

    所以这就是答案。事实证明该脚本无法正常运行,因为 CRON 在您正常运行时使用的文件路径与该脚本不同。

    真正有帮助的是运行邮件并查看 CRON 发送到我的帐户的所有错误消息。啊,成为 N00b 的乐趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      相关资源
      最近更新 更多