Файл: CLOUDME-HTML-RTL-SUPPORT/phpMailer/docs/pop3_article.txt
Строк: 164
This is built for PHP Mailer 1.72 and was not tested with any previous
version. It was developed under PHP 4.3.11 (E_ALL). It works under PHP 5
and 5.1 with E_ALL, but not in Strict mode due to var deprecation (but then
neither does PHP Mailer either!). It follows the RFC 1939 standard
explicitly and is fully commented.
With that noted, here is how to
implement it:
I didn't want to modify the PHP Mailer classes at all, so
you will have to include/require this class along with the base one. It can
sit quite happily in the phpmailer directory.
When you need it, create
your POP3 object
Right before I invoke PHP Mailer I activate the POP3
authorisation. POP3 before SMTP is a process whereby you login to your web
hosts POP3 mail server BEFORE sending out any emails via SMTP. The POP3
logon 'verifies' your ability to send email by SMTP, which typically
otherwise blocks you. On my web host (Pair Networks) a single POP3 logon is
enough to 'verify' you for 90 minutes. Here is some sample PHP code that
activates the POP3 logon and then sends an email via PHP
Mailer:
<?php
$pop->authorise('pop3.example.com', 110, 30,
'mailer', 'password', 1);
$mail = new PHPMailer(); $mail->SMTPDebug =
2; $mail->isSMTP();
$mail->isHTML(false); $mail->Host =
'relay.example.com';
$mail->From =
'mailer@example.com';
$mail->FromName = 'Example
Mailer';
$mail->Subject = 'My subject';
$mail->Body = 'Hello
world';
$mail->addAddress('rich@corephp.co.uk', 'Richard Davey');
if
(!$mail->send()) {
echo $mail->ErrorInfo;
}
?>
The PHP
Mailer parts of this code should be obvious to anyone who has used PHP
Mailer before. One thing to note - you almost certainly will not need to
use SMTP Authentication *and* POP3 before SMTP together. The Authorisation
method is a proxy method to all of the others within that class. There are
connect, Logon and disconnect methods available, but I wrapped them in the
single Authorisation one to make things easier.
The Parameters
The
authorise parameters are as
follows:
$pop->authorise('pop3.example.com', 110, 30, 'mailer',
'password', 1);
1. pop3.example.com - The POP3 Mail Server Name
(hostname or IP address)
2. 110 - The POP3 Port on which to connect
(default is usually 110, but check with your host)
3. 30 - A connection
time-out value (in seconds)
4. mailer - The POP3 Username required to
logon
5. password - The POP3 Password required to logon
6. 1 - The
class debug level (0 = off, 1+ = debug output is echoed to the
browser)
Final Comments + the Download
1) This class does not support
APOP connections. This is only because I did not have an APOP server to
test with, but if you'd like to see that added just contact me.
2)
Opening and closing lots of POP3 connections can be quite a
resource/network drain. If you need to send a whole batch of emails then
just perform the authentication once at the start, and then loop through
your mail sending script. Providing this process doesn't take longer than
the verification period lasts on your POP3 server, you should be fine. With
my host that period is 90 minutes, i.e. plenty of time.
3) If you have
heavy requirements for this script (i.e. send a LOT of email on a frequent
basis) then I would advise seeking out an alternative sending method
(direct SMTP ideally). If this isn't possible then you could modify this
class so the 'last authorised' date is recorded somewhere (MySQL, Flat
file, etc) meaning you only open a new connection if the old one has
expired, saving you precious overhead.
4) There are lots of other POP3
classes for PHP available. However most of them implement the full POP3
command set, where-as this one is purely for authentication, and much
lighter as a result. However using any of the other POP3 classes to just
logon to your server would have the same net result. At the end of the day,
use whatever method you feel most comfortable with.
Download
My thanks
to Chris Ryan for the inspiration (even if indirectly, via his SMTP
class)