17.3. Reading Mail with IMAP or POP3
Problem
You want to read mail using IMAP or POP3, which allows you to create a web-based email client.
Solution
Use PHP’s IMAP extension, which speaks both IMAP and POP3:
// open IMAP connection $mail = imap_open('{mail.server.com:143}', 'username', 'password'); // or, open POP3 connection $mail = imap_open('{mail.server.com:110/pop3}', 'username', 'password'); // grab a list of all the mail headers $headers = imap_headers($mail); // grab a header object for the last message in the mailbox $last = imap_num_msg($mail); $header = imap_header($mail, $last); // grab the body for the same message $body = imap_body($mail, $last); // close the connection imap_close($mail);
Discussion
The underlying library PHP uses to support IMAP and POP3 offers a
seemingly unending number of features that allow you to essentially
write an entire mail client. With all those features, however, comes
complexity. In fact, there are currently 63 different functions in
PHP beginning with the word imap
, and that
doesn’t take into account that some also speak POP3
and NNTP.
However, the basics of talking with a mail server are straightforward. Like many features in PHP, you begin by opening the connection and grabbing a handle:
$mail = imap_open('{mail.server.com:143}', 'username', 'password');
This opens an IMAP connection to the server named mail.server.com on port 143. It also passes along a username and password as the second and third arguments.
To open a POP3 connection ...
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.