我们正在使用Perl 5,版本18,版本1(v5.18.1)构建。
之前,我们使用用户名和密码连接Outlook 2007以通过Mail :: IMAPClient模块进行连接,因为不需要使用SSL或TLS。现在,我们已将Outlook迁移到2016年,在此版本中,必须引入SSL或TLS。
我试图在Perl脚本中添加SSL代码,但失败如下:
无法通过包“ IO :: Socket :: SSL”找到对象方法“ new”(也许您忘记加载“ IO :: Socket :: SSL”?)
我的代码:
$client = Mail::IMAPClient->new(
server => $Eserver,
User => $Euser,
Password => $Epassword,
ssl => 1,
port => 993,
Socket => IO::Socket::SSL->new
( Proto => 'tcp',
PeerAddr => $Eserver,
PeerPort => 993, # IMAP over SSL standard port
),
如果有人以正确的方式在IMAP客户端中添加ssl模块,请帮忙。是否需要将Perl 5升级到最新版本以使用SSL或TLS(使用starttls方法?)。
此外,我们如何知道我们正在使用哪个IMAPclient模块?
我确定有些东西丢失了。不确定,因为我在Perl工作时很幼稚。
答案 0 :(得分:5)
无法通过包“ IO :: Socket :: SSL”找到对象方法“新”(也许您忘记加载“ IO :: Socket :: SSL”)
您忘了加载IO::Socket::SSL
吗?
use IO::Socket::SSL;
在the documentation中的示例中甚至存在:
use IO::Socket::SSL;
my $imap = Mail::IMAPClient->new
( User => 'your-username',
Password => 'your-password',
Socket => IO::Socket::SSL->new
( Proto => 'tcp',
PeerAddr => 'some.imap.server',
PeerPort => 993, # IMAP over SSL standard port
),
);
答案 1 :(得分:3)
通常,这意味着您忘记了“ use PackageName;”行。
$ perl -le "IO::Socket::SSL->new()"
Can't locate object method "new" via package "IO::Socket::SSL" (perhaps you forgot to load "IO::Socket::SSL"?) at -e line 1.
且没有错误
$ perl -le "use IO::Socket::SSL; IO::Socket::SSL->new()"