Как мне разобрать письмо, чтобы извлечь текст (пароль) и сохранить в переменной - PullRequest
0 голосов
/ 12 апреля 2011

У меня есть система, которая отправляет электронное письмо пользователю с временным паролем. Я использую следующий скрипт для вывода электронной почты, но я ищу способ извлечь пароль и сохранить значение в переменной. В теле письма будет следующий текст: «Ваш временный пароль». Я хочу проанализировать тело письма и извлечь его. Я предполагаю, что мог бы использовать модуль синтаксического анализа для поиска «Ваш временный пароль», а затем сохранить следующий токен в переменной, но мои знания 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 голосов
/ 12 апреля 2011

Вот функция, которая получает текст сообщения и возвращает пароль, или 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).

...