我有一个系统使用临时密码向用户发送电子邮件。我使用以下脚本输出电子邮件,但我正在寻找一种方法来提取密码并将值存储在变量中。电子邮件的正文将包含以下文本“您的临时密码是”我想解析电子邮件正文并提取。我假设我可以使用一个解析模块来搜索“你的临时密码是”,然后将下一个标记存储到一个变量,但我对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;
答案 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)
。