解决方法为PHP IMAP功能? 尝试使用XAMPP本地主机与收到的电子邮件合作(Workaro

2019-06-24 10:35发布

在该项目中,我现在的工作时,我想补充,我可以从“封闭”到“重开”,当用户发送一封电子邮件,支持桌面更改车票的状态的功能。 我也想他们的电子邮件回复保存到数据库中。

我遇到的问题是,我不能让PHP的IMAP功能对我目前的Apache配置工作。 从看这里不少帖子在计算器和其他地方,看来这个问题是OpenSSL是不是在标准配置中启用。 因此,例如,当我运行这段代码:

<h1>IMAP testing!</h1>
<?php
$connect = "{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX";
$user    = "my email address @gmail.com";
$pass    = "my password";

$mailbox = imap_open($connect, $user, $pass);
?>

我得到的错误:

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

有什么我可以做的,总之重新编译PHP,我的本地计算机上模拟IMAP功能,以便能够继续发展与电子邮件(邮件管道)工作的功能?

在我的当前配置的一些注意事项,以防万一它可以帮助:

  • OS X 10.7.4
  • PHP v.5.3.1

UPDATE -

我几乎没有(感谢dAm2K)!

我安装的Stunnel(使用MAC端口),得到的一切终于配置和运行的命令:

sudo stunnel /opt/local/etc/stunnel/stunnel.conf -c -d 127.0.0.1:443 -r imap.gmail.com:993

(不管出于什么原因,我不得不路径添加到.conf文件)

现在我的代码如下所示:

<?php
$connect = "{localhost:443}INBOX";
$user    = "my email address @gmail.com";
$pass    = "my password";

$mailbox = imap_open($connect, $user, $pass);
?>

现在,当我加载网页,它只是挂起30秒左右,并给出了警告:

Notice: Unknown: Connection failed to localhost,443: Operation timed out (errflg=2) in Unknown on line 0

有趣的是,如果我改变$连接:

$connect = "{localhost:443/ssl}INBOX";

要么

$connect = "{localhost:443/novalidate-cert}INBOX";

我得到了原来的错误,这是:

Notice: Unknown: Can't open mailbox {localhost:443/novalidate-cert}INBOX: invalid remote specification (errflg=2) in Unknown on line 0

有任何想法吗? 只是一种猜测,但可以把它也许是一些跟安全通道的设置,就像有一个自签名的证书或某事与stunnel.conf文件我失踪?

非常感谢。

蒂姆

Answer 1:

你可能有一个防火墙,将imap.gmail.com块传出TCP数据包的端口993。

问问你的系统管理员来检查对DPORT 993(IMAPS)传出TCP。 同时检查你的DNS解析imap.gmail.com:

命令:

telnet imap.gmail.com 993

应该给你一个有效的连接。 如果没有成功,你发现这个问题。

您可能需要在开发机器上安装一个IMAP服务器,以便为发展下线继续...你可以安装“信使IMAP”包,但它不是一个非常简单的任务...

如果连接succeded和命令:

openssl s_client -connect imap.gmail.com:993

给你一个有效的连接,问题可能是你的libc的客户端不具有SSL支持编译。在这种情况下,你不能用PHP使用IMAPS,你可以使用“安全通道”命令了明确流量的影响你的本地机器外出时加密的Gmail的IMAP服务器。

命令:

stunnel -c -d 127.0.0.1:443 -r imap.gmail.com:993

应该做的伎俩。 这样,您就可以将PHP脚本连接到127.0.0.1:443:

<?
  $connect = "{localhost:443}INBOX";
?>


文章来源: Workaround for PHP IMAP functions? Trying to work with incoming email on localhost using XAMPP