perl从gmail加载电子邮件头进行解析

perl从gmail加载电子邮件头进行解析,perl,email,imap,Perl,Email,Imap,我正在写一个Icinga插件来检查我们与第三方签约的smtp服务器是否被列入黑名单 该服务使用未知数量的smtp中继。我需要下载头的所有“已接收”部分,并解析它们以获得SMTP中继的不同IP 我正在尝试使用,我可以对帐户执行一些操作(登录、选择文件夹、搜索邮件等),但我还没有找到一种方法来获取整个标题或我需要的部分 如果需要,我不介意使用其他模块。您可以尝试使用。根据文档中的示例,您可以这样使用它: $hashref = $imap->parse_headers(1,"Date","Rec

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

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

我正在尝试使用,我可以对帐户执行一些操作(登录、选择文件夹、搜索邮件等),但我还没有找到一种方法来获取整个标题或我需要的部分

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

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

$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> ] ,
  };
然后得到一个散列引用,它将字段名映射到值数组的引用,如下所示:

$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> ] ,
  };
$hashref={
“日期”=>[“1999年9月9日星期四09:49:04-0400”],
“已接收”=>[q/
mailhost.bigco.com从mailhub([111.11.111.111])下载
(Netscape Messaging Server 3.6)的ESMTP id为AAA527D
;1999年6月18日星期五16:29:07+0000
/,q/
来自mailhub.bigco.com的目录守护程序(PMDF V5.2-31#38473)
身份证bigshot@bigco.com
(ORCPT rfc822;大。shot@bigco.com);1999年6月18日星期五16:29:05+0000(格林尼治标准时间)
/,q/
从某处([999.9.99.99])通过smtp-relay.bigco.com(PMDF V5.2-31#38473)
使用ESMTP id进行大屏幕显示。shot@bigco.com;星期五,
1999年6月18日16:29:05+0000(格林尼治标准时间)
/] ,
“主题”=>[qw/救命!我摔倒了,站不起来!/],
“到”=>[“大人物],
};

这将在单个数组中为您提供所有
接收的
头。

在我如何尝试访问消息ID时出现了一个问题,因此我无法使上述代码段正常工作。尽管如此,还是要这样做