如何解析电子邮件以提取文本(密码)并存储在变量中

时间:2011-04-12 18:04:48

标签: perl pop3

我有一个系统使用临时密码向用户发送电子邮件。我使用以下脚本输出电子邮件,但我正在寻找一种方法来提取密码并将值存储在变量中。电子邮件的正文将包含以下文本“您的临时密码是”我想解析电子邮件正文并提取。我假设我可以使用一个解析模块来搜索“你的临时密码是”,然后将下一个标记存储到一个变量,但我对perl的了解并不是那么好。有人能指出我正确的方向吗?

#!/usr/bin/perl

use Net::POP3;

my $username="user";
my $password="password";
my $host="192.168.17.50";

    # Constructors
    my $pop = Net::POP3->new($host)||
        die "Problem calling Net::PoP->new\n$!\n";

#    $pop = Net::POP3->new($host, Timeout => 60);
    if ($pop->login($username, $password) > 0) {
      my $msgnums = $pop->list; # hashref of msgnum => size
      foreach my $msgnum (keys %$msgnums) {
        my $msg = $pop->get($msgnum);
        my $password = extract_password($msg)||
           die "Problem with extract_password\n$!\n";
        print $password;
        $pop->delete($msgnum);
      }
    }
    $pop->quit;

1 个答案:

答案 0 :(得分:0)

这是一个接收消息文本并返回密码的函数,如果找不到,则为undef

sub extract_password {
    my $text = shift;

    if ($text =~ /Your temporary password is (\S+)/) {
        return $1;
    }
    else {
        return undef;
    }
}

然后你可以说my $password = extract_password($msg_text)