Obejście dla funkcji IMAP PHP? Próbujesz pracować z pocztą przychodzącą na localhost za pomocą XAMPP
W projekcie, nad którym obecnie pracuję, próbuję dodać funkcjonalność, w której mogę zmienić status biletu z „zamkniętego” na „ponownie otwarty”, gdy użytkownik wysyła wiadomość e-mail do działu pomocy technicznej. Chciałbym również zapisać ich odpowiedź na e-mail w bazie danych.
Problem, z którym się spotykam, polega na tym, że nie mogę uzyskać funkcji IMAP PHP, aby działała na mojej obecnej konfiguracji Apache. Patrząc na kilka postów tutaj na stackoverflow i inne miejsca, wygląda na to, że OpenSSL nie jest włączony w standardowej konfiguracji. Na przykład, gdy uruchomię ten kod:
<code><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); ?> </code>
Dostaję błąd:
<code>Can't open mailbox {imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX: invalid remote specification. </code>
Czy jest coś, co mogę zrobić, poza rekompilacją PHP, aby naśladować funkcjonalność IMAP na moim lokalnym komputerze, aby móc dalej rozwijać funkcjonalność pracy z pocztą elektroniczną (e-mailem)?
Kilka uwag na temat mojej obecnej konfiguracji, na wypadek gdyby to pomogło:
OS X 10.7.4PHP v.5.3.1AKTUALIZACJA -
Jestem prawie tam (dzięki dAm2K)!
Zainstalowałem Stunnel (używając Mac Portów), ostatecznie skonfigurowałem wszystko i uruchomiłem polecenie:
<code>sudo stunnel /opt/local/etc/stunnel/stunnel.conf -c -d 127.0.0.1:443 -r imap.gmail.com:993 </code>
(Z jakiegokolwiek powodu musiałem dodać ścieżkę do pliku .conf)
Teraz mój kod wygląda tak:
<code><?php $connect = "{localhost:443}INBOX"; $user = "my email address @gmail.com"; $pass = "my password"; $mailbox = imap_open($connect, $user, $pass); ?> </code>
Teraz, gdy ładuję stronę, po prostu zawiesza się na około 30 sekund i wyświetla ostrzeżenie:
<code>Notice: Unknown: Connection failed to localhost,443: Operation timed out (errflg=2) in Unknown on line 0 </code>
Co ciekawe, jeśli zmienię $ connect na:
<code>$connect = "{localhost:443/ssl}INBOX"; </code>
lub
<code>$connect = "{localhost:443/novalidate-cert}INBOX"; </code>
Dostaję oryginalny błąd, który był:
<code>Notice: Unknown: Can't open mailbox {localhost:443/novalidate-cert}INBOX: invalid remote specification (errflg=2) in Unknown on line 0 </code>
Jakieś pomysły? Tylko zgadnij, ale czy może to mieć coś wspólnego z konfiguracją stunnel, jak posiadanie certyfikatu samopodpisanego lub czegoś z brakującym plikiem stunnel.conf?
Wielkie dzięki.
Tim