我们有一个PHP脚本来处理退回邮件。现在我必须注意从PEAR NET / POP3库切换到native-ish php-imap库。
邮件服务器在没有ssl(显然是POP3)的情况下侦听端口110上的远程服务器。
但是我无法使用以下代码使用php-imap库打开与该服务器的连接:
imap_open("{example.com:110/pop3/notls}INBOX", $username, $password);
这会导致以下错误:
Warning: imap_open(): Couldn't open stream {example.com:110/pop3/notls}INBOX in C:\xampp\htdocs\bounce-processing\info.php on line 1
Notice: Unknown: POP3 connection broken in response (errflg=2) in Unknown on line 0
以下PEAR POP3实施仍然有效:
require("Net/POP3.php");
$pop3 = new Net_POP3();
$pop3->connect('example.com', 110)
$pop3->login($username, $password);
我已经尝试过:
imap_open("{IP-ADDRESS:110/pop3/notls}INBOX", $username, $password);
imap_open("{IP-ADDRESS:110/pop3/notls/user=$username}INBOX", $username, $password);
注意:我也在不同的设置上测试了这一点(CentOS / Apache 2.2,Ubuntu 14.04 / nginx,PHP 5.4,PHP 5.5,PHP 5.6,没有不同的结果。
我该怎么办?调试并没有真正帮助我 - 而梨类的工作让我感到非常震惊。
提前致谢!
编辑:使用imap / ssl编译php二进制文件,并在php.ini中启用php-imap扩展名。如果您知道另一种使用php与pop3邮件服务器通信的未来方法,请告诉我。我们不想使用phpmailer等框架。
EDIT2 :telnet登录的成功率为40%。我能够使用正确的凭据成功登录10次中的4次。
CAPA命令的输出:
CAPA
+OK Here's what I can do:
STLS
TOP
USER
LOGIN-DELAY 10
PIPELINING
UIDL
IMPLEMENTATION Courier Mail Server
.
我不知道这是否重要,但邮件服务器实际上是由专门的服务器住房和托管公司托管的。
EDIT3 :尝试通过
进行连接{IP_ADDRESS:110/pop3}
返回以下错误:
Warning: imap_open(): Couldn't open stream {IP_ADDRESS:110/pop3} in C:\xampp\htdocs\bounce-processing\index.php on line 12
Notice: Unknown: Certificate failure for IP_ADDRESS: Server name does not match certificate.
附加标志novalidate-cert会导致超时。