| 作者 | 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的位置, 不然會失敗
|