是否有支持TLS的Perl IMAP模块?

是否有支持TLS的Perl IMAP模块?,perl,imap,ssl,Perl,Imap,Ssl,我正在编写一个Perl脚本来连接到需要TLS通过端口143的IMAP服务器。服务器不支持通过SSL连接。到目前为止,我发现的Perl IMAP模块只支持SSL,不支持TLS 是否有提供TLS支持的Perl IMAP模块?到目前为止,我已经看到: Net::IMAP Net::IMAP::Simple Net::IMAP::客户端 Net::IMAP::Client支持SSL,但不支持TLS 有什么想法吗?您制作了一个非ssl套接字,稍后将对其进行转换,“如果您想使用IO::socket::INE

我正在编写一个Perl脚本来连接到需要TLS通过端口143的IMAP服务器。服务器不支持通过SSL连接。到目前为止,我发现的Perl IMAP模块只支持SSL,不支持TLS

是否有提供TLS支持的Perl IMAP模块?到目前为止,我已经看到:

Net::IMAP Net::IMAP::Simple Net::IMAP::客户端

Net::IMAP::Client支持SSL,但不支持TLS


有什么想法吗?

您制作了一个非ssl套接字,稍后将对其进行转换,“如果您想使用IO::socket::INET替代方案,如IO::socket::ssl,这也很有用。”

。。。当您在此处创建方法引用时

这里的例子很容易调整


是的,但是TLS!=SSL。要使TLS正常工作,您需要创建一个普通套接字,处理IMAP STARTTLS命令,然后将其转换为SSL套接字。虽然IO::Socket::SSL可以像这样“升级”套接字,但STARTTLS协商是IMAP协议的一部分,因此不是“重新发明轮子”——您让IMAP客户机模块的每个用户通过必须处理协议的该部分(包括任何其他比特和片段,例如空闲事件)来重新发明轮子在这个过程中会出现“手动”

我想可能会打开一个套接字,转储接收到的任何内容,然后发送“STARTTLS\r\n”,然后调用start\u SSL,希望一切顺利。当然,除非手动检查,否则没有功能检查,为此,您必须查看IMAP RFC


Mail::IMAPClient内置了TLS处理功能,尽管我在处理多部分消息时遇到了问题,因为我只想下载某些部分-如果您要获取整个消息,这并不重要。但对我来说,搜索还在继续

恐怕我对这方面了解不够,无法编写需要编写的代码。我真的在寻找一个模块,提供这种功能内置。换句话说,我只想启动一个IMAP连接并指定“TLS=>1”。另一方面,如果您能更详细地说明如何使用上述方法获得支持TLS的IMAP模块,我也会很高兴。使用io::socket建立网络连接,然后将该连接交给mail::imapclient。它不会尝试建立自己的连接,而是使用为其创建的连接。这允许你使用任何你能集合的机制。这是一件好事,因为我们真的不希望mail::imapclient编程人员重新发明轮子和处理网络。我已经解决了部件的问题。文档中有一个小错误:要获取body结构对象上零件的id,请使用->id not->bodyid作为文档。Mail::IMAPClient也是我最好的邮件模块。