[PHP] Parsing POP3 Mailbox

2003-07-17 Thread Brian S. Drexler
Ok, this is what I want to do.  I would like to parse a mailbox and forward
the returned mail in it to other users.  For instance, if I send an e-mail
to [EMAIL PROTECTED] and [EMAIL PROTECTED] doesn't exist it is going
to send the return to [EMAIL PROTECTED].  I want to parse [EMAIL PROTECTED] and
send the e-mail to whoever is in the Disposition-Notification-To header of
the e-mail.  Anyone know where I can find a good script to parse mail boxes
or maybe give me an idea of where to start?  I checked hotscripts and some
others but they are complete web based e-mail systems.  I'd like to run this
as a cron job if possible and I don't want to tear another system all apart
if I don't have to.  Thanks in advance!

Brian


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Parsing POP3 Mailbox

2003-07-17 Thread David Nicholson
Hello,

This is a reply to an e-mail that you wrote on Thu, 17 Jul 2003 at 14:04, lines
prefixed by '' were originally written by you.
 Ok, this is what I want to do.  I would like to parse a mailbox and
 forward
 the returned mail in it to other users.  For instance, if I send an
 e-mail
 to [EMAIL PROTECTED] and [EMAIL PROTECTED] doesn't exist it is
 going
 to send the return to [EMAIL PROTECTED].  I want to parse
 [EMAIL PROTECTED] and
 send the e-mail to whoever is in the Disposition-Notification-To
 header of
 the e-mail.  Anyone know where I can find a good script to parse mail
 boxes
 or maybe give me an idea of where to start?  I checked hotscripts and
 some
 others but they are complete web based e-mail systems.  I'd like to
 run this
 as a cron job if possible and I don't want to tear another system all
 apart

If you have the imap php extensions installed you could use them (they support
POP too) I normally work on systems without the imap enxtensions though so I
chose to make my own class to deal with POP3 related tasks.  Here are some
snippets that you may find useful...

class POPClient {

..

function Connect(){
// connect to server
if(!$this-[EMAIL PROTECTED]($this-server, $this-port)){
$this-error = Could not connect to
{$this-server}:{$this-port};
return FALSE;
}
// login to server:
fputs($this-sock, USER {$this-user}\r\n);
$buf = fgets($this-sock, 1024);
if($buf[0] != '+'){
$this-error = Invalid username: {$this-user};
return FALSE;
}
fputs($this-sock, PASS {$this-pass}\r\n);
$buf = fgets($this-sock, 1024);
if($buf[0] != '+') {
$this-error = Invalid password;
return FALSE;
}
$this-connected = TRUE;
return TRUE;
}

snip

function MessageCount(){
if($this-connected){
fputs($this-sock, STAT\r\n);
$buf = fgets($this-sock, 1024);
$buf = fgets($this-sock, 1024);
$statbits = split(' ', $buf, 3);
if(isset($statbits[1])){
return $statbits[1];
} else {
return 0;
}
} else {
$this-error = Not connected to server;
return FALSE;
}
}

snip

function RetrieveMsg($id, $headonly=FALSE){
if($this-connected){
if($headonly){ $command=TOP; $param= 0; } else {
$command=RETR; $param=; }
fputs($this-sock, $command $id$param\r\n);
$buf = fgets($this-sock, 1024);
if($buf[0] != '+') {
$this-error = Mail server would not let me retrieve message
$id;
return FALSE;
}
$message=;$thisline=;
while ($thisline!=.\r\n){ // .\r\n signifies the end of the
message
$thisline = fgets($this-sock, 1024);
$this-messagesource .= $thisline;
}
return TRUE;
} else {
$this-error = Not connected to server;
return FALSE;
}
}

snip

}


--
phpmachine :: The quick and easy to use service providing you with
professionally developed PHP scripts :: http://www.phpmachine.com/

  Professional Web Development by David Nicholson
http://www.djnicholson.com/

QuizSender.com - How well do your friends actually know you?
 http://www.quizsender.com/
(developed entirely in PHP)

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Parsing POP3 Mailbox

2003-07-17 Thread David Nicholson
Hello,

This is a reply to an e-mail that you wrote on Thu, 17 Jul 2003 at
15:10, lines prefixed by '' were originally written by you.
 Forgive me for bothering you again with such a silly question, but
say
 want to connect as localhost with password PASS.  How could I
call
 the
 function?

No problem, very basic usage (with no error checking) would be as
follows...

$popclient = new POPClient(serveraddress,username,password);
$popclient-Connect();
$messagecount = $popclient-MessageCount();
for($i=0;$i$messagecount;$i++){
$messageheaders = $popclient-RetrieveMsg($i, TRUE);
// do something with the headers here
}

The above code assumes you have a constructor function in the class
(the one I posted originally didn't include it).  Add this function
to the class to make it work...
function POPClient($server, $user, $pass, $port=110){
$this-server = $server;
$this-user = $user;
$this-pass = $pass;
$this-port = $port;
$this-connected = FALSE;
$this-messagesource = ;
}

HTH,

David

--
phpmachine :: The quick and easy to use service providing you with
professionally developed PHP scripts :: http://www.phpmachine.com/

  Professional Web Development by David Nicholson
http://www.djnicholson.com/

QuizSender.com - How well do your friends actually know you?
 http://www.quizsender.com/
(developed entirely in PHP)

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php