LVI. IMAP, POP3 and NNTP Functions

简介

These functions are not limited to the IMAP protocol, despite their name. The underlying c-client library also supports NNTP , POP3 and local mailbox access methods.

需求

This extension requires the c-client library to be installed. Grab the latest version from ftp://ftp.cac.washington.edu/imap/ and compile it.

It's important that you do not copy the IMAP source files directly into the system include directory as there may be conflicts. Instead, create a new directory inside the system include directory, such as /usr/local/imap-2000b/ (location and name depend on your setup and IMAP version), and inside this new directory create additional directories named lib/ and include/ . From the c-client directory from your IMAP source tree, copy all the *.h files into include/ and all the *.c files into lib/ . Additionally when you compiled IMAP, a file named c-client.a was created. Also put this in the lib/ directory but rename it as libc-client.a .

注: To build the c-client library with SSL or/and Kerberos support read the docs supplied with the package.

注: In Mandrake Linux, the IMAP library ( libc-client.a ) is compiled without Kerberos support. A separate version with SSL ( client-PHP4.a ) is installed. The library must be recompiled in order to add Kerberos support.

安装

To get these functions to work, you have to compile PHP with --with-imap[=DIR] , where DIR is the c-client install prefix. From our example above, you would use --with-imap=/usr/local/imap-2000b . This location depends on where you created this directory according to the description above. Windows users may include the php_imap.dll DLL in php.ini . IMAP is not supported on systems earlier that Windows 2000. This is because it uses encryption functions in order to enable SSL connections to the mail servers.

注: Depending how the c-client was configured, you might also need to add --with-imap-ssl=/path/to/openssl/ and/or --with-kerberos=/path/to/kerberos into the PHP configure line.

警告

IMAP 扩展模块不能和 recode 扩展模块, YAZ 扩展模块以及 Cyrus 扩展模块同时使用。因为它们使用了相同的内部符号。

运行时配置

本扩展模块在 php.ini 中未定义任何配置选项。

预定义常量

以下常量由本扩展模块定义,因此只有在本扩展模块被编译到 PHP 中,或者在运行时被动态加载后才有效。

NIL ( integer )

OP_DEBUG ( integer )

OP_READONLY ( integer )

Open mailbox read-only

OP_ANONYMOUS ( integer )

Don't use or update a .newsrc for news (NNTP only)

OP_SHORTCACHE ( integer )

OP_SILENT ( integer )

OP_PROTOTYPE ( integer )

OP_HALFOPEN ( integer )

For IMAP and NNTP names, open a connection but don't open a mailbox.

OP_EXPUNGE ( integer )

OP_SECURE ( integer )

CL_EXPUNGE ( integer )

silently expunge the mailbox before closing when calling imap_close()

FT_UID ( integer )

The parameter is a UID

FT_PEEK ( integer )

Do not set the \Seen flag if not already set

FT_NOT ( integer )

FT_INTERNAL ( integer )

The return string is in internal format, will not canonicalize to CRLF.

FT_PREFETCHTEXT ( integer )

ST_UID ( integer )

The sequence argument contains UIDs instead of sequence numbers

ST_SILENT ( integer )

ST_SET ( integer )

CP_UID ( integer )

the sequence numbers contain UIDS

CP_MOVE ( integer )

Delete the messages from the current mailbox after copying with imap_mail_copy()

SE_UID ( integer )

Return UIDs instead of sequence numbers

SE_FREE ( integer )

SE_NOPREFETCH ( integer )

Don't prefetch searched messages

SO_FREE ( integer )

SO_NOSERVER ( integer )

SA_MESSAGES ( integer )

SA_RECENT ( integer )

SA_UNSEEN ( integer )

SA_UIDNEXT ( integer )

SA_UIDVALIDITY ( integer )

SA_ALL ( integer )

LATT_NOINFERIORS ( integer )

This mailbox has no "children" (there are no mailboxes below this one).

LATT_NOSELECT ( integer )

This is only a container, not a mailbox - you cannot open it.

LATT_MARKED ( integer )

This mailbox is marked. Only used by UW-IMAPD.

LATT_UNMARKED ( integer )

This mailbox is not marked. Only used by UW-IMAPD.

SORTDATE ( integer )

Sort criteria for imap_sort() : message Date

SORTARRIVAL ( integer )

Sort criteria for imap_sort() : arrival date

SORTFROM ( integer )

Sort criteria for imap_sort() : mailbox in first From address

SORTSUBJECT ( integer )

Sort criteria for imap_sort() : message subject

SORTTO ( integer )

Sort criteria for imap_sort() : mailbox in first To address

SORTCC ( integer )

Sort criteria for imap_sort() : mailbox in first cc address

SORTSIZE ( integer )

Sort criteria for imap_sort() : size of message in octets

TYPETEXT ( integer )

TYPEMULTIPART ( integer )

TYPEMESSAGE ( integer )

TYPEAPPLICATION ( integer )

TYPEAUDIO ( integer )

TYPEIMAGE ( integer )

TYPEVIDEO ( integer )

TYPEOTHER ( integer )

ENC7BIT ( integer )

ENC8BIT ( integer )

ENCBINARY ( integer )

ENCBASE64 ( integer )

ENCQUOTEDPRINTABLE ( integer )

ENCOTHER ( integer )

参见

This document can't go into detail on all the topics touched by the provided functions. Further information is provided by the documentation of the c-client library source ( docs/internal.txt ). and the following RFC documents:

A detailed overview is also available in the books Programming Internet Email by David Wood and Managing IMAP by Dianna Mullet & Kevin Mullet.

目录
imap_8bit  --  Convert an 8bit string to a quoted-printable string
imap_alerts  --  This function returns all IMAP alert messages (if any) that have occurred during this page request or since the alert stack was reset
imap_append  --  Append a string message to a specified mailbox
imap_base64  -- Decode BASE64 encoded text
imap_binary  --  Convert an 8bit string to a base64 string
imap_body  -- Read the message body
imap_bodystruct  --  Read the structure of a specified body section of a specific message
imap_check  -- Check current mailbox
imap_clearflag_full  -- Clears flags on messages
imap_close  -- Close an IMAP stream
imap_createmailbox  -- Create a new mailbox
imap_delete  --  Mark a message for deletion from current mailbox
imap_deletemailbox  -- Delete a mailbox
imap_errors  --  This function returns all of the IMAP errors (if any) that have occurred during this page request or since the error stack was reset
imap_expunge  -- Delete all messages marked for deletion
imap_fetch_overview  --  Read an overview of the information in the headers of the given message
imap_fetchbody  --  Fetch a particular section of the body of the message
imap_fetchheader  -- Returns header for a message
imap_fetchstructure  --  Read the structure of a particular message
imap_get_quota  --  Retrieve the quota level settings, and usage statics per mailbox
imap_get_quotaroot  --  Retrieve the quota settings per user
imap_getacl  --  Gets the ACL for a given mailbox
imap_getmailboxes  --  Read the list of mailboxes, returning detailed information on each one
imap_getsubscribed  -- List all the subscribed mailboxes
imap_header  -- 别名 imap_headerinfo()
imap_headerinfo  -- Read the header of the message
imap_headers  --  Returns headers for all messages in a mailbox
imap_last_error  --  This function returns the last IMAP error (if any) that occurred during this page request
imap_list  -- Read the list of mailboxes
imap_listmailbox  -- 别名 imap_list()
imap_listscan  --  Read the list of mailboxes, takes a string to search for in the text of the mailbox
imap_listsubscribed  -- 别名 imap_lsub()
imap_lsub  -- List all the subscribed mailboxes
imap_mail_compose  --  Create a MIME message based on given envelope and body sections
imap_mail_copy  -- Copy specified messages to a mailbox
imap_mail_move  -- Move specified messages to a mailbox
imap_mail  --  Send an email message
imap_mailboxmsginfo  -- Get information about the current mailbox
imap_mime_header_decode  -- Decode MIME header elements
imap_msgno  --  This function returns the message sequence number for the given UID
imap_num_msg  --  Gives the number of messages in the current mailbox
imap_num_recent  -- Gives the number of recent messages in current mailbox
imap_open  -- Open an IMAP stream to a mailbox
imap_ping  -- Check if the IMAP stream is still active
imap_qprint  -- Convert a quoted-printable string to an 8 bit string
imap_renamemailbox  -- Rename an old mailbox to new mailbox
imap_reopen  -- Reopen IMAP stream to new mailbox
imap_rfc822_parse_adrlist  -- Parses an address string
imap_rfc822_parse_headers  -- Parse mail headers from a string
imap_rfc822_write_address  --  Returns a properly formatted email address given the mailbox, host, and personal info
imap_scanmailbox  -- 别名 imap_listscan()
imap_search  --  This function returns an array of messages matching the given search criteria
imap_set_quota  -- Sets a quota for a given mailbox
imap_setacl  --  Sets the ACL for a giving mailbox
imap_setflag_full  -- Sets flags on messages
imap_sort  -- Sort an array of message headers
imap_status  --  This function returns status information on a mailbox other than the current one
imap_subscribe  -- Subscribe to a mailbox
imap_thread  --  Returns a tree of threaded message
imap_timeout  --  Set or fetch imap timeout
imap_uid  --  This function returns the UID for the given message sequence number
imap_undelete  --  Unmark the message which is marked deleted
imap_unsubscribe  -- Unsubscribe from a mailbox
imap_utf7_decode  --  Decodes a modified UTF-7 encoded string
imap_utf7_encode  --  Converts ISO-8859-1 string to modified UTF-7 text
imap_utf8  --  Converts MIME-encoded text to UTF-8