注意:使用Windows在perl中发送自动邮件

时间:2015-01-20 11:24:47

标签: perl

我有一个特定的脚本,它将隔离日志文件并放置正在按预期方式传递的result.txt。但我希望在此隔离日志文件将其附加到文本文件中并发送后发送邮件。这个脚本没有错误,但我需要增强它。请帮助我如何使用它

#use Win32;

if (@ARGV != 2) {

    print "Please pass atleast one paramer\n";
    print "Usage:\n\t $0 <file_name><Pattern>\n";
    exit;
}
$File_name     = $ARGV[0];
$res_File_name = $File_name . "\.result\.txt";
$Pattern       = $ARGV[1]; 
chomp($Pattern);
open(FD,"$File_name") or die ("File '$File_name' could not be open \n");
open(WFD,">$res_File_name") or die("File $res_File_name could not be opened\n");

print "Enter begin match pattern: ";
$bgn = <stdin>; 
chomp($bgn);
print  $bgn;

print "Enter end match pattern: ";
$en = <stdin>; 
chomp($en);



while ($line = <FD>) {

    chomp($line);
    if ($line =~ /^$bgn/) { #seaching a patter at begining of the string.

        print WFD "Begin pattern '$bgn' matched with the line '$line'\n";
    }
    if ($line =~ /$en$/) { #seaching a patter at end of the string.

        print WFD "End pattern '$en' matched with the line '$line'\n";

      #exit;
    }
print WFD $_ if(/$Pattern/);
      # main();

       # use constant Service_Name =>'MyServ'
      #  use constant Service_Desc =>'MyServDesc'
       # sub main()

      # {
      # $opt=shift(@ ARGV)||""

      # if ($opt =~ /^(-i|--install)$/i)
      # {
         install _service( Service_Name, Service_Desc)



     #  }
      #  elsif ($opt =~ /^(-r|--remove)$/i)
  # {
     # remove_service(Service_Name);
  # }
  # elsif ($opt =~ /^(run)$/i)
#}

  # here we create a log file wth STDOUT and STDERR
  # The log file will be created with extension .log
  $log = $cwd . $bn . ".log";
 # open(STDOUT, ">> $log") or die "Couldn't open $log for appending: $!\n";
 # open(STDERR, ">&STDOUT") or die "Could";

close(FD);
close(WFD);

2 个答案:

答案 0 :(得分:0)

您的第一个“增强”应该是将use strictuse warnings添加到程序的顶部,并使用my声明所有变量。在编写任何 Perl程序时,这应该是您的第一个想法。

至于发送电子邮件,你没有说你要发送什么,但我建议你使用MIME::Lite模块。

答案 1 :(得分:0)

使用Perl创建和发送电子邮件的标准方法是使用Email :: *命名空间中的许多模块。

要创建简单的电子邮件,您应该使用Email::Simple

use Email::Simple;

my $email = Email::Simple->create(
    header => [
      From    => 'casey@geeknest.com',
      To      => 'drain@example.com',
      Subject => 'Message in a bottle',
    ],
    body => '...',
);

$email->header_set( 'X-Content-Container' => 'bottle/glass' );

对于更复杂的电子邮件(即包含多个部分的电子邮件,如文件附件或HTML版本),请使用Email::MIME

要发送电子邮件,请使用Email::Sender(实际上,在大多数情况下,您可能可以使用Email::Sender::Simple

use Email::Sender::Simple qw(sendmail);

sendmail($email); # The $email we created in the previous example.