PHP imap_open():尝试连接到GMAIL时无效的远程规范

时间:2011-07-17 22:43:43

标签: php imap

我正在尝试从Gmail中检索邮件并收到以下错误:

Can't open mailbox {imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX: invalid remote specification

OpenSSL和IMAP安装在我的服务器中,以下是openssl&来自phpinfo()的imap信息;

openssl
OpenSSL support enabled
OpenSSL Library Version OpenSSL 0.9.7l 28 Sep 2006
OpenSSL Header Version

imap

IMAP c-Client Version   2007e
Kerberos Support    enabled

我现在真的很困惑,请帮忙!

3 个答案:

答案 0 :(得分:2)

我遇到过类似的问题。我可以从个人经验告诉你,虽然你可能安装了IMAP和OpenSSL,但你可能需要重新编译php install“--with-imap-ssl [= DIR]。”我想做同样的事情并收到同样的错误。我也安装了相同的OpenSSL和IMAP版本。我已经重新编译了php,这是我的配置:

  

./ configure --prefix = / usr / local / apache2 / php --with-imap = / usr / local / imap-2007f / --with-curl = / usr / local / curl / --enable-套接字--with-imap-ssl = / usr / local / ssl --with-openssl --with-apxs2 = / usr / local / apache2 / bin / apxs --with-kerberos --without-iconv

您不需要使用相同的配置,因为它是根据我的需要定制的。

如果您不熟悉编译php,可以在此处找到源:
http://www.php.net/downloads.php
这是一个关于如何编译php和apache的基本教程,假设你在UNIX上。它还包括如何使用curl编译它们,你可以使用curl的所有指令并分别用ssl和imap替换它们,它应该工作。 http://thermo.sdsu.edu/testhome/phpinstall.html

答案 1 :(得分:0)

对于 Docker,我了解到在调用 docker-php-ext-install before docker-php-ext-configure 时会发生此错误,这是我的错误操作。因此 RUN 中的 Dockerfile 指令必须如下所示:

FROM php:8-fpm-alpine
# ...
RUN apk add imap-dev openssl-dev \
    && docker-php-ext-configure imap --with-imap --with-imap-ssl \
    && docker-php-ext-install imap

代替

RUN apk add imap-dev openssl-dev \
    && docker-php-ext-install imap \
    && docker-php-ext-configure imap --with-imap --with-imap-ssl

否则,似乎安装了 imap 扩展 - 像 function_exists('imap_open') 这样的调用将返回 true。但是所有对 imap_open 的调用 将因上述错误而失败:

<块引用>

无效的远程规范

即使它是已被广泛证明的正确远程规范,例如 {imap.gmail.com:993/imap/ssl/novalidate-cert/norsh}INBOX{imap.gmail.com:993/imap/ssl}INBOX 来自例如this article。所以一定要先配置好再安装扩展。

答案 2 :(得分:-1)

 $iconnect = imap_open("{imap.gmail.com:993/ssl/novalidate-cert}INBOX","user@gmail.com","passwordofuser") or die(imap_errors());

检查此代码,这将连接到gmail服务器。