作者  fcamel (飛啊!起舞的小駱駝)  看板   P_fcamel
 標題  [php]   PHP+IMAP, 用php做pop3認證功能
 時間  Sat Nov 13 21:33:55 2004


要用php做pop3認證很容易,
用imap_open()去開INBOX就知道了

這裡有些例子
http://www.php.net/manual/tw/function.imap-open.php

1. use pop3 to verify user
 To connect to a POP3 server on port 110 on the local server, use:

<?php
$mbox = imap_open ("{localhost:110/pop3}INBOX", "user_id", "password");
?>

2. pop3 with SSL but without cert verifying

 To connect to an SSL IMAP or POP3 server with a self-signed certificate, add
/ssl/novalidate-cert after the protocol specification:

<?php
$mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}", "user_id",
"password");
?>


但是php內建沒有加上imap的功能, 啟動的方法有點麻煩: PS freebsd ports裡有, 不過我在裝完後才知道這驚人的事實... ports裡的php+imap: mail/php4-imap % head /usr/ports/mail/php4-imap/Makefile # New ports collection makefile for: php4-imap # Date created: 7 Jul 2004 # Whom: Alex Dupre # # $FreeBSD: ports/mail/php4-imap/Makefile,v 1.1 2004/07/19 08:15:17 ale Exp $ #
所以以下的流程是比較麻煩的做法, 但是任意系統應該都適用 http://www.php.net/imap 有說明文件, 描述大流程怎麼做, 以下是補充整理後的流程 0. 到www.php.net抓php tarball並解開 1. imap source tarball This extension requires the c-client library to be installed. Grab the latest version from ftp://ftp.cac.washington.edu/imap/ and compile it. 要到這個站台抓 (ex: imap-2004a.tar.Z), 而不是用ports抓來的, web server有沒有裝cclient or imap-uw和這個無關 2. compile tarball tarball解開後, 照著說明compile, 產生出c-client.a [NOTE] 這份tar ball的Makefile指定的SSL位置和ports下裝的不一樣, 它指的位置大概是OpenSSL tarball裝的位置, 但ports會把執行檔, lib, header等分開放, 所以compile時會出現x509.h, pem.h not found之類的error message ( 這裡的目錄位置皆為解開tarball的目錄的相對位置 ) 參照 README -> docs/SSLBUILD 得知, a. 一定要先裝OpenSSL才可以裝php+imap b. OpenSSL的相關設定在src/osdep/unix/Makefile裡 以下是我對照ports安裝OpenSSL位置改的結果 # Extended flags needed for SSL. You may need to modify. SSLDIR=/usr/local/openssl SSLCERTS=$(SSLDIR)/certs SSLKEYS=$(SSLCERTS) SSLINCLUDE=/usr/local/include/openssl SSLLIB=/usr/local/lib 3. copy *.c, c-client.a, *.h 隨便建一個目錄, ex: /tmp/imap 假設之前抓好並編好的imap位在/tmp/imap-2004a下 mkdir /tmp/imap/include mkdir /tmp/imap/lib cp /tmp/imap-2004a/c-client/*.h /tmp/imap/include cp /tmp/imap-2004a/c-client/*.c /tmp/imap/lib cp /tmp/imap-2004a/c-client/c-client.a /tmp/imap/lib [NOTE] c-client.a要在step2 compile成功才會有 4. 回到php tarball解開tarball的目錄下 (假設為/tmp/php-4.3.9) cd /tmp/php-4.3.9 ./configure --with-mysql --prefix=/usr/local --enable-ftp \ --with-imap=/tmp/imap-2004a --with-imap-ssl=/usr/local/openssl \ --enable-session make make install # 會裝libphp4.so到/usr/local/libexec/apache/下 其它參數是我另外加的常用參數, 主要是這行 --with-imap=/tmp/imap-2004a --with-imap-ssl=/usr/local/openssl [NOTE] --with-imap-ssl一定要指定裝好OpenSSL的位置, 不然會失敗