私が現在取り組んでいるプロジェクトでは、ユーザーがサポート デスクにメールを送信したときに、チケットのステータスを「クローズ」から「再開」に変更できる機能を追加しようとしています。また、メールの返信をデータベースに保存したいと思います。
私が直面している問題は、現在の Apache 構成で PHP の IMAP 関数を動作させることができないことです。ここの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 Ports を使用して) インストールし、最終的にすべてを構成して、次のコマンドを実行しました。
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 ファイルに関係するものでしょうか?
どうもありがとう。
ティム