perl从gmail下载电子邮件标题以进行解析

时间:2014-07-24 13:34:35

标签: perl email imap

我正在编写一个Icinga插件来检查我们与第三方签订合同的smtp服务器是否被列入黑名单。

该服务使用未知数量的smtp中继。我需要下载标题的所有“已接收”部分,并解析它们以获取SMTP中继的不同IP。

我正在尝试使用Mail::IMAPClient,我可以对帐户执行一些操作(登录,选择文件夹,搜索消息等),但我还没有找到获取整个标头的方法我需要它的部分。

如果需要,我不介意使用其他模块。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用the parse_headers function。根据文档中的示例,您可以像这样使用它:

$hashref = $imap->parse_headers(1,"Date","Received","Subject","To");

然后你得到一个哈希引用,它将字段名称映射到值数组的引用,如下所示:

  $hashref = {
      "Date"     => [ "Thu, 09 Sep 1999 09:49:04 -0400" ]  ,
      "Received" => [ q/
        from mailhub ([111.11.111.111]) by mailhost.bigco.com
        (Netscape Messaging Server 3.6)  with ESMTP id AAA527D for
        <bigshot@bigco.com>; Fri, 18 Jun 1999 16:29:07 +0000
        /, q/
        from directory-daemon by mailhub.bigco.com (PMDF V5.2-31 #38473)
        id <0FDJ0010174HF7@mailhub.bigco.com> for bigshot@bigco.com
        (ORCPT rfc822;big.shot@bigco.com); Fri, 18 Jun 1999 16:29:05 +0000 (GMT)
        /, q/
        from someplace ([999.9.99.99]) by smtp-relay.bigco.com (PMDF V5.2-31 #38473)
        with ESMTP id <0FDJ0000P74H0W@smtp-relay.bigco.com> for big.shot@bigco.com; Fri,
        18 Jun 1999 16:29:05 +0000 (GMT)
        /] ,
      "Subject" => [ qw/ Help! I've fallen and I can't get up!/ ] ,
      "To"      => [ "Big Shot <big.shot@bigco.com> ] ,
  };

这应该为您提供单个数组中的所有Received标题。