如何使用文本文件中的数据生成和发送HTML格式的电子邮件?

时间:2014-03-03 15:38:43

标签: perl

我有一个看起来像这样的文件: cat output_title.txt

C817491287  Cat: Nor      Sus: something date: 02/26/14
C858151287  Cat: Nor      Sus: really something date: 02/26/14

我想使用文件中的参数发送HTML格式的电子邮件,例如

mine :firstparamter starting with C
sus: ?
date: ?

我该怎么做?

编辑:代码

open (FILE, 'output_title.txt'); 
while (<FILE>) { 
   chomp; 
   ($chg, $Cat, $category, $sta, $stus, $sus, $open, $open_date) = split(" "); 
   print "Chnge is:$chg\n"; 
}

在doncoyote评论之后:

use strict; 
use warnings; 
open (FILE, 'output_title.txt'); 
while (<FILE>) { 
  my ($Cnum,$Cat,$Sus,$Date) = m!(C\d{9})\s+Cat:\s+(\w+)\s+Sus:\s([\w\s]*?)date:\s+([\d/]+)$! ; 
  print "Cnum:$Cnum\t"; 
  print "Caty:$Cat\t"; 
  print "Stus:$Sus\t"; 
  print "opendate:$Date\n"; 
}
close (FILE); exit;  

2 个答案:

答案 0 :(得分:1)

当提取文本中存在轻微但可量化的差异时,您可能会发现正则表达式模式捕获以定义所需变量比分割更好。 这样的事情应该处理提供的案例。这可以改进,但是我的头脑中的起点很好。

my (     $Cnum,           $Cat,          $Sus,            $Date   ) 
  =  m!(C\d{9})\s+Cat:\s+(\w+)\s+Sus:\s([\w\s]*?)date:\s+([\d/]+)$!

您应该开始研究perlretut文档中的正则表达式,以了解正在发生的事情。基本上,转义字母w,d,s分别代表字数和不可打印字符(空格,制表符)。括号捕获模式并将其作为列表传递给赋值变量。方括号定义了多个字符选择。

量词:+是一个或多个,*是零或更多,花括号是以逗号分隔的指定最小值/最大值。他们紧接着的每一个角色。问号是非贪婪的*而$是行锚的结束。

答案 1 :(得分:0)

我非常确定有几种方法可以从perl发送html邮件。

例如:

use MIME::Lite;
my $msg = MIME::Lite->new(
    From     => from_you@somedomain.com,
    To       => to_someone_else@someotherdomain.com,
    Subject  => "your mail subject",
    Type     => 'text/html',
    Data     => qq {
    <body>
        <table>
            <tr> <td>$chg</td><td>$Cat</td>.....</tr>
        </table>
    </body>
    },
);

$msg->send();