如何在Perl中将文件内容作为电子邮件发送?

cod*_*ear 5 email perl file

我有一个从一堆cron作业创建的日志.我现在的任务是将特定日志(例如错误输出)作为电子邮件发送.从文件中获取内容并将其作为电子邮件发送的最佳方法是什么?

我已经知道如何在perl中发送电子邮件.我只需要弄清楚如何读取文件并将其作为电子邮件的文本.

kar*_*m79 11

我使用MIME :: Lite,这是我用于夜间备份的cron脚本:

$msg = MIME::Lite->new(
  From    => 'backup-bot@mydomain.com',
  To      => 'test@example.com',
  Bcc     => 'test@example.com',
  Subject => "DB.tgz Nightly MySQL backup!",
  Type    => "text/plain",
  Data    => "Your backup sir.");

$msg->attach(Type=> "application/x-tar",
             Path =>"/var/some/folder/DB_Dump/DB.tgz",
             Filename =>"DB.tgz");

$msg->send;
Run Code Online (Sandbox Code Playgroud)


set*_*eth 4

您可以像这样获取文件的内容并像使用任何其他字符串一样使用它:

 open my $fh, '<', 'file.txt' or die "Ouch: $!\n";

 my $text = do {
   local $/;
   <$fh>
 };

 close $fh or die "Ugh: $!\n";
 print $text,"\n";
Run Code Online (Sandbox Code Playgroud)

  • 执行“do”后面的块并返回最后一行(请参阅“perldoc -f do”)。本地 $/ 取消定义输入记录分隔符的值,因此 `&lt;$fh&gt;` 获取整个文件。这是一个相当常见的 Perl 习惯用法,称为 file slurping。您还可以按照 Sinan 的建议使用“File::Slurp::read_file”。 (3认同)