在我现在正在进行的项目中,我正在尝试添加功能,当用户向支持台发送电子邮件时,我可以将工单的状态从“关闭”更改为“重新打开”。我还想将他们的电子邮件回复保存到数据库中。
我遇到的问题是我无法让 PHP 的 IMAP 函数在我当前的 Apache 配置上工作。从stackoverflow和其他地方的很多帖子来看,问题似乎是标准配置中没有启用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
更新 -
我快到了(感谢 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 更改为:
$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 的设置有关,比如拥有自签名证书或我缺少的 stunnel.conf 文件?
非常感谢。
蒂姆