WeberDev.com PHP and MySQL Code

LOG IN
BEGINNER GUIDESPHP CLASSESCODE SEARCHARTICLES SEARCHPHP FORUMSPHP MANUALPHP FUNCTIONS LISTWEB SITE TEMPLATES
Start typing to search for PHP and MySQL Code Snippets and Articles Search
Submit a code Example / Snippet Join us on FaceBook
Submit a code Example / Snippet Submit Your Code
Poker Tournaments Poker Tournaments
Poker Guide for Developers Poker Guide for Developers
Search Engine Optimization Monitor SEO Monitor
Web Site UpTime Monitor UpTime Monitor
Your Personal Examples List My Favorite Examples
Your Personal Articles List My Favorite Articles
Edit Account Info Update Your Profile
PHP Code Search
Web Development Forums
Learn MySQL Playing Trivia
PHPBB2 Templates
Web Development Resources
Web Development Content
Internet Security Software
PHPClasses
PHP Editor
PHP Jobs
Vision.To Design
Ajax Tutorials
PHP Programming Help
PHP/MySQL Programming
Webmaster Resources
Webmaster Forum
XML meta language
website builder
פרייסז - הכח לקנות עובר לידיים שלך
Texas Holdem Poker Evangelists

Go Back Add a Comment Send this example to a friend Add this Article to your personal favoritest for easy future access to your favorite Code Examples and Articles. Submit a code example Print this code example.
BACK ADD A COMMENT SEND TO A FRIEND ADD TO MY FAVORITES ADD CODE EXAMPLES PRINT
Title : Using PHP to read email in a POP3 mailbox
Categories : PHP, Email Click here to Update Your Picture
bastien koert
Date : Sep 23rd 2004
Grade : 4 of 5 (graded 22 times)
Viewed : 99029
File : No file for this code example.
Images : No Images for this code example.
Search : More code by bastien koert
Action : Grade This Code Example
Tools : My Examples List

Submit your own code examples  Submit your own code examples 
 

Hi All.

This code opens a pop3 mailbox and reads in the messages stored there one at a time. Each messages is taken and the subject line and body are built and passed to a create_incident function which would process it according to the needs of your application (you get to write this part!).

Each message is read and checked for some kind of validity (I checked the subject line for certain items) and if its spam, it flagged for deletion. Regular allowable messages are then separated into a subject and a full body line (handles base64 encoded messages as well). Once the message was processed, its flagged for deletion, which happens when the server closes the connection to the mailbox.

The intent of this code was not to emulate a mail system, its design goal was to read emails, and produce database records based on that email's data. It does not make full use of the POP3 functionaility, but then it didn't need to.

Enjoy...

Bastien

<?php

require("email_functions.php");

global
$timeout, $error, $buffer;

// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

// HTTP/1.0
header("Pragma: no-cache");

ob_start();

//-----------------------------------------------------------------------------
//                 Declarations
//-----------------------------------------------------------------------------

$error            = "";                                                        //    Error string.

$timeout          = 90;                                                        //    Default timeout before giving
up on a network operation.

$Count            = -1;                                                        //    Mailbox msg count

$buffer           = 512;                                                       //    Socket buffer for socket
fgets() calls, max per RFC 1939 the returned line a POP3
                                                                           
//    server can send is 512 bytes.

$server               = "mail.yourdomain.com";                //    Set this to hard code
the server name

$RFC1939         
= true;                                                    //    Set by noop(). See
rfc1939.txt

$msg_list_array
= array();                                                  //    List of messages from server

$login                 = 'email_login';
$pass                  = 'email_password';
$KeyUserID            = 'me';                                                      //        for the db record to id the program
as the user

//-----------------------------------------------------------------------------
//                 Control Code
//-----------------------------------------------------------------------------
   //echo "<h2>Starting Program</h2><br>";
       
set_time_limit($timeout);

       
$fp = connect ($server, $port = 110);

   
$Count = login($login,$pass, $fp);

    if( (!
$Count) or ($Count == -1) )
    {
       
do_log("TIRS", "Check for new messages",'', "No Messages");
        exit;
    }
// end if

    // ONLY USE THIS IF YOUR PHP VERSION SUPPORTS IT!
    // register_shutdown_function(quit());

   
if ($Count < 1)
    {
        die();
    } else {
       
//echo "Login OK: Inbox contains [$Count] messages<BR>\n";
       
do_log("TIRS", "Check for new messages",'', "$Count Messages");
       
$msg_list_array = uidl("", $fp);
       
set_time_limit($timeout);
    }
// end if

    // loop thru the array to get each message
   
for ($i=1; $i <= $Count; $i++){
           
set_time_limit($timeout);
           
$MsgOne = get($i, $fp);

            if( (!
$MsgOne) or (gettype($MsgOne) != "array") )
            {
               
//echo "oops, Message not returned by the server.<BR>\n";
               
exit;
            }
// end if
            /*
                call the function to read the message
                returns true if access, breakdown and insertion
                in to db are completed sucessfully
           */
             
message_details($MsgOne, $i, $fp);

      }
// end for loop

      //close the email box and delete all messages marked for deletion
     
quit($fp);

   
//close the application
    //echo "<br>Finished</b>";
   
exit;

//-----------------------------------------------------------------------------
//                                    Function Listing
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//                                    Get the Message Details
//-----------------------------------------------------------------------------
function     message_details($MsgOne, $msgNo, $fp)
        {
       
/*
        Function to read the message and extract :
            a. subject
            b. date
            c. split the body line by line
   */
           
$body                     = '';                    // get the body of the message into 1 variable
           
$subjects             = '';         // get the subject of the email
           
$dates                     = '';                    // get the date of the email
           
$body_start_key = false;          // body starts at blank line, blank line is
separator for from headers to body
           $TIRSFlag             
= false;      // flag for seeing if the email is really to
be processed by the app
           $base64Flag     
= false;      // flag to handle base 64 encoding by
email systems.



            foreach (
$MsgOne as $key => $value)
        {
        if (
trim($value) == "Content-Transfer-Encoding: base64"){
         
$base64Flag = true;
        }
//end if

        //get the subject line of the email
       
if (strlen(stristr($value, "Subject"))>1){
         
$subjects = trim(stristr($value, " "));

         
//look for IncidentNo in the subject to see if we need to attempt to process the email
         
if (strlen(stristr($subjects, "IncidentNo:"))>1){
             
$TIRSFlag = true;
            }
// end if
       
}// end if

        //get the date of the email
       
if (strlen(stristr($value, "Date"))>1){
         
$dates = trim(stristr($value, " "));
           
$date_key = $key;
        }
// end if


        //the body
       
if (strlen(trim($value))==0){
          if (
$body_start_key == false){ $body_start_key = true; } //set the start key for the body
       
}//end if

       
if ($body_start_key == true){
         
$body .= trim($value);
          if (
$base64Flag == false){ $body .="<br />"; }
        }
// end if

     
}// end foreach

      // only create incident if the subject line contains the word incident
     
if ($TIRSFlag == false){

         
//delete the message
         
delete($msgNo, $fp);

      }else{

         
//decode the message if its base64 encoded
         
if ($base64Flag == true) {
           
$body = base64_decode($body);
          }
//end if

          // call the function that does the sql inserts
         
create_incident($subjects, $body, $msgNo, $fp);

      }
// end if
       
}// end function

//-----------------------------------------------------------------------------
//                                    Create the incident
//-----------------------------------------------------------------------------
function create_incident($subject, $message_body, $msgNo, $fp)
        {
             
//process the body of the email and take it apart and find stuff in it...do whatever processing you need to here
             //the code below is simply a hint and probably not relevant to your situation
             //its strictly here as a guide as to what can be done with the body of the email
             //my application takes the subject and body apart and creates a record in our web-based
             //application's database (the code for this has been removed...)


             // declarations for function
               
$inc_sec_off = '';
               
$inc_site    = '';
               
$inc_type    = '';
               
$inc_issue   = '';
               
$inc_co_id   = '';
               
$inc_http    = '';
             
$options     = '';

             
// take the subject apart to get the individual elements

           
$sub_details         = stristr($subject, ":");                                       // get
rest of subject line from the first ':'
           
$split_subject     = explode (" ", $sub_details);                                  //
split on space
           $incident_no           
=    trim($split_subject[1]);                                      //
incident number from email
           $incident_type       
= trim($split_subject[3]);                                      //
incident type from email
           $inc_date                 
= trim($split_subject[5]);                                                        // incident date
from email
             $inc_dates               
= explode("/",$inc_date);


             if (
count($inc_dates)>1){
                     
$inc_date            = $inc_dates[2]."-".$inc_dates[0]."-".$inc_dates[1];
   
//proper date format (Damned Americans)
             
}//end if

             
$weekday                    = date( "l", $inc_date);                                                            // get the weekday

             
$time                         = strtotime($inc_date . " ". trim($split_subject[6]));

             
$inc_time                 = date("H:i:s", strftime($time) );                                        // incident
time from email

             
//convert the body crlf to <br> tags if not done when the message was built
             
if (strlen(stristr($message_body,"<br>"))==0){
                     
$message_body = nl2br($message_body);
           }

           
// take the body apart to get the individual elements
           
$body                        =    explode("<br />", $message_body);

           for (
$x=0; $x<count($body); $x++){

                   if (
strlen(stristr($body[$x], "Security Officer"))>1)       { 
$inc_sec_off            = substr(stristr($body[$x], ":"),1);   }
                   if (
strlen(stristr($body[$x], "client_number"))>1)                {  $inc_site 
           
= substr(stristr($body[$x], ":"),1);   }
                   if (
strlen(stristr($body[$x], "Company ID"))>1)                      {  $inc_co_id 
           
= substr(stristr($body[$x], ":"),1);   }
                   if (
strlen(stristr($body[$x], "Are"))>1)                            {  $inc_issue
           
= substr(stristr($body[$x], ":"),1);   }
                   if (
strlen(stristr($body[$x], "http"))>1)                           {  $inc_https
           
= explode("//",$body[$x]);                 }

       }
// end for loop

       //echo $message_body;


      //delete the email if the insertion was succesful
         
if ($result && $result1){
           
delete ($msgNo, $fp);
          }
// end if


       
}// end function


?>



email_functions.php
<?php
/*
<!-- Version=2.30 Date=11/05/04 Name=email_functions.php --> */

function connect ($server, $port)
    {
        global
$buffer;
       
//    Opens a socket to the specified server. Unless overridden,
        //    port defaults to 110. Returns true on success, false on fail

        // If MAILSERVER is set, override $server with it's value
       
$e_server = $server;

        if(!
$fp = fsockopen($e_server, $port, &$errno, &$errstr))
        {
           
$error = "POP3 connect: Error [$errno] [$errstr]";
            return
false;
        }

       
stream_set_blocking($fp,true);
       
update_timer();
       
$reply = fgets($fp,$buffer);
       
$reply = strip_clf($reply);
        if(!
is_ok($reply))
        {
           
$error = "POP3 connect: Error [$reply]";
            return
false;
        }

       
$BANNER = parse_banner($reply);
       
$RFC1939 = noop($fp);
        if(
$RFC1939)
        {
           
$error = "POP3: premature NOOP OK, NOT an RFC 1939 Compliant server";
           
quit($fp);
            return
false;
        }
        return
$fp;
    }
// end function

function noop ($fp)
    {

       
$cmd = "NOOP";
       
$reply = send_cmd($cmd, $fp);
        if(!
is_ok($reply))
        {
            return
false;
        }
        return
true;
    }
// end function

function user ($user, $fp)
    {
       
// Sends the USER command, returns true or false

       
if(empty($user))
        {
           
$error = "POP3 user: no user id submitted";
            return
false;
        }

       
$reply = send_cmd("USER $user", $fp);
        if(!
is_ok($reply))
        {
           
$error = "POP3 user: Error [$reply]";
            return
false;
        }
        return
true;
    }
// end function

function pass ($pass, $fp)
    {
       
// Sends the PASS command, returns # of msgs in mailbox,
        // returns false (undef) on Auth failure

       
if(empty($pass))
        {
           
$error = "POP3 pass: no password submitted";
            return
false;
        }

       
$reply = send_cmd("PASS $pass", $fp);
        if(!
is_ok($reply))
        {
           
$error = "POP3 pass: authentication failed [$reply]";
           
quit($fp);
            return
false;
        }
       
//    Auth successful.
        //echo "<br>User Authenticated<br>";
       
$count = last("count", $fp);
       
$COUNT = $count;
       
$RFC1939 = noop($fp);
        if(!
$RFC1939)
        {
           
$error = "POP3 pass: NOOP failed. Server not RFC 1939 compliant";
           
quit($fp);
            return
false;
        }
        return
$count;
    }
// end function

function login ($login = "", $pass = "", $fp)
    {
       
// Sends both user and pass. Returns # of msgs in mailbox or
        // false on failure (or -1, if the error occurs while getting
        // the number of messages.)

       
if(!user($login, $fp))
        {
           
//    Preserve the error generated by user()
           
return false;
        }

       
$count = pass($pass, $fp);
        if( (!
$count) or ($count == -1) )
        {
           
//    Preserve the error generated by last() and pass()
           
return "-1";
        }
        return
$count;
    }
// end function

function top ($msgNum, $numLines = "0", $fp)
    {
       
//    Gets the header and first $numLines of the msg body
        //    returns data in an array with each returned line being
        //    an array element. If $numLines is empty, returns
        //    only the header information, and none of the body.


       
update_timer();


       
$buffer = $buffer;
       
$cmd = "TOP $msgNum $numLines";
       
fwrite($fp, "TOP $msgNum $numLines\r\n");
       
$reply = fgets($fp, $buffer);
       
$reply = $strip_clf($reply);
        if(
$DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); }
        if(!
is_ok($reply))
        {
           
$error = "POP3 top: Error [$reply]";
            return
false;
        }

       
$count = 0;
       
$MsgArray = array();

       
$line = fgets($fp,$buffer);
        while ( !
ereg("^\.\r\n",$line))
        {
           
$MsgArray[$count] = $line;
           
$count++;
           
$line = fgets($fp,$buffer);
            if(empty(
$line))    { break; }
        }

        return
$MsgArray;
    }
// end function

function pop_list ($msgNum = "", $fp)
    {
       
//    If called with an argument, returns that msgs' size in octets
        //    No argument returns an associative array of undeleted
        //    msg numbers and their sizes in octets
               
global $buffer;

       
$Total = $Count;
        if( (!
$Total) or ($Total == -1) )
        {
            return
false;
        }
        if(
$Total == 0)
        {
            return array(
"0","0");
           
// return -1;    // mailbox empty
       
}

       
$update_timer();

        if(!empty(
$msgNum))
        {
           
$cmd = "LIST $msgNum";
           
fwrite($fp,"$cmd\r\n");
           
$reply = fgets($fp,$buffer);
           
$reply = $strip_clf($reply);
            if(!
is_ok($reply))
            {
               
$error = "POP3 pop_list: Error [$reply]";
                return
false;
            }
            list(
$junk,$num,$size) = explode(" ",$reply);
            return
$size;
        }
       
$cmd = "LIST";
       
$reply = $send_cmd($cmd, $fp);
        if(!
is_ok($reply))
        {
           
$reply = $strip_clf($reply);
           
$error = "POP3 pop_list: Error [$reply]";
            return
false;
        }
       
$MsgArray = array();
       
$MsgArray[0] = $Total;
        for(
$msgC=1;$msgC <= $Total; $msgC++)
        {
            if(
$msgC > $Total) { break; }
           
$line = fgets($fp,$buffer);
           
$line = $strip_clf($line);
            if(
ereg("^\.",$line))
            {
               
$error = "POP3 pop_list: Premature end of list";
                return
false;
            }
            list(
$thisMsg,$msgSize) = explode(" ",$line);
           
settype($thisMsg,"integer");
            if(
$thisMsg != $msgC)
            {
               
$MsgArray[$msgC] = "deleted";
            }
            else
            {
               
$MsgArray[$msgC] = $msgSize;
            }
        }
        return
$MsgArray;
    }
// end function

function get ($msgNum, $fp)
    {
       
//    Retrieve the specified msg number. Returns an array
        //    where each line of the msg is an array element.

       
global $buffer;
       
update_timer();

       
$buffer = $buffer;
       
$cmd = "RETR $msgNum";

       
$reply = send_cmd($cmd, $fp);

        if(!
is_ok($reply))
        {
           
$error = "POP3 get: Error [$reply]";
            return
false;
        }

       
$count = 0;
       
$MsgArray = array();

       
$line = fgets($fp,$buffer);
        while ( !
ereg("^\.\r\n",$line))
        {
           
$MsgArray[$count] = $line;
           
$count++;
           
$line = fgets($fp,$buffer);
            if(empty(
$line))    { break; }
        }
        return
$MsgArray;
    }
// end function

function last ( $type = "count", $fp )
    {
       
//    Returns the highest msg number in the mailbox.
        //    returns -1 on error, 0+ on success, if type != count
        //    results in a popstat() call (2 element array returned)

       
$last = -1;

       
$reply = send_cmd("STAT", $fp);
        if(!
is_ok($reply))
        {
           
$error = "POP3 last: error [$reply]";
            return
$last;
        }

       
$Vars = explode(" ",$reply);
       
$count = $Vars[1];
       
$size = $Vars[2];
       
settype($count,"integer");
       
settype($size,"integer");
        if(
$type != "count")
        {

            return array(
$count,$size);
        }
        return
$count;
    }
// end function

function resets($fp)
    {
       
//    Resets the status of the remote server. This includes
        //    resetting the status of ALL msgs to not be deleted.
        //    This method automatically closes the connection to the server.


       
$reply = $send_cmd("RSET", $fp);
        if(!
is_ok($reply))
        {
           
//    The POP3 RSET command -never- gives a -ERR
            //    response - if it ever does, something truely
            //    wild is going on.

           
$error = "POP3 reset: Error [$reply]";
        }
       
quit($fp);
        return
true;
    }
// end function

function send_cmd ( $cmd, $fp )
    {
       
//    Sends a user defined command string to the
        //    POP server and returns the results. Useful for
        //    non-compliant or custom POP servers.
        //    Do NOT include the \r\n as part of your command
        //    string - it will be appended automatically.

        //    The return value is a standard fgets() call, which
        //    will read up to $buffer bytes of data, until it
        //    encounters a new line, or EOF, whichever happens first.

        //    This method works best if $cmd responds with only
        //    one line of data.
               
global $buffer;
        if(!isset(
$fp))
        {
           
$error = "POP3 send_cmd: No connection to server";
            return
false;
        }

        if(empty(
$cmd))
        {
           
$error = "POP3 send_cmd: Empty command string";
            return
"";
        }

       
$buffer = $buffer;
       
update_timer();
       
fwrite($fp,"$cmd\r\n");
       
$reply = fgets($fp,$buffer);
       
$reply = strip_clf($reply);
        return
$reply;
    }
// end function

function quit($fp)
    {
       
//    Closes the connection to the POP3 server, deleting
        //    any msgs marked as deleted.
       
global $buffer;

       
$cmd = "QUIT";
       
fwrite($fp,"$cmd\r\n");
       
$reply = fgets($fp,$buffer);
       
$reply = strip_clf($reply);
       
fclose($fp);
        return
true;
    }
// end function


function is_ok ($cmd = "")
    {
       
//    Return true or false on +OK or -ERR

       
if(empty($cmd))                 { return false; }
        if (
ereg ("^\+OK", $cmd ) )    { return true; }
        return
false;
    }
// end function

function strip_clf ($text = "")
    {
       
// Strips \r\n from server responses

       
if(empty($text)) { return $text; }
       
$stripped = ereg_replace("\r","",$text);
       
$stripped = ereg_replace("\n","",$stripped);
        return
$stripped;
    }
// end function

function parse_banner ( $server_text )
    {
       
$outside = true;
       
$banner = "";
       
$length = strlen($server_text);
        for(
$count =0; $count < $length; $count++)
        {
           
$digit = substr($server_text,$count,1);
            if(!empty(
$digit))
            {
                if( (!
$outside) and ($digit != '<') and ($digit != '>') )
                {
                   
$banner .= $digit;
                }
                if (
$digit == '<')
                {
                   
$outside = false;
                }
                if(
$digit == '>')
                {
                   
$outside = true;
                }
            }
        }
       
$banner = strip_clf($banner);    // Just in case
       
return "<$banner>";
    }
// end function

function popstat ()
    {
       
//    Returns an array of 2 elements. The number of undeleted
        //    msgs in the mailbox, and the size of the mbox in octets.

       
$PopArray = last("array");

        if(
$PopArray == -1) { return false; }

        if( (!
$PopArray) or (empty($PopArray)) )
        {
            return
false;
        }
        return
$PopArray;
    }
// end function

function uidl ($msgNum = "", $fp)
    {
       
//    Returns the UIDL of the msg specified. If called with
        //    no arguments, returns an associative array where each
        //    undeleted msg num is a key, and the msg's uidl is the element
        //    Array element 0 will contain the total number of msgs

       
global $buffer, $Count;

        if(!empty(
$msgNum))
        {
           
$cmd = "UIDL $msgNum";
           
$reply = send_cmd($cmd);
            if(!
is_ok($reply))
            {
               
$error = "POP3 uidl: Error [$reply]";
                return
false;
            }
            list (
$ok,$num,$myUidl) = explode(" ",$reply);
            return
$myUidl;
        }
        else
        {
           
//update_timer();

           
$UIDLArray = array();
           
$Total = $Count;
           
$UIDLArray[0] = $Total;

            if (
$Total < 1)
            {
                return
$UIDLArray;
            }
           
$cmd = "UIDL";
           
fwrite($fp, "UIDL\r\n");
           
$reply = fgets($fp, $buffer);
           
$reply = strip_clf($reply);

            if(!
is_ok($reply))
            {
               
$error = "POP3 uidl: Error [$reply]";
                return
false;
            }

           
$line = "";
           
$count = 1;
           
$line = fgets($fp,$buffer);
            while ( !
ereg("^\.\r\n",$line))
            {
                if(
ereg("^\.\r\n",$line))
                {
                    break;
                }
                list (
$msg,$msgUidl) = explode(" ",$line);
               
$msgUidl = strip_clf($msgUidl);
                if(
$count == $msg)
                {
                   
$UIDLArray[$msg] = $msgUidl;
                }
                else
                {
                   
$UIDLArray[$count] = "deleted";
                }
               
$count++;
               
$line = fgets($fp,$buffer);
            }
        }
        return
$UIDLArray;
    }
// end function

function delete ($msgNum = "", $fp)
    {
       
//    Flags a specified msg as deleted. The msg will not
        //    be deleted until a quit() method is called.

       
if(empty($msgNum))
        {
           
$error = "POP3 delete: No msg number submitted";
            return
false;
        }
       
$reply = send_cmd("DELE $msgNum", $fp);
        if(!
is_ok($reply))
        {
           
$error = "POP3 delete: Command failed [$reply]";
            return
false;
        }
        return
true;
    }
// end function

function conn($sql, $db_account='')
        {

   
/*

        add code to decide what server/db to tag when inserting the data

        include("../includes/portal.php");

    */

       
$host  = $db_account['host'];
       
$user  = $db_account['login'];
       
$pass  = $db_account['pwd'];
       
$db    = $db_account['db'];

           
//echo "commnecing connection to local db<br>";
            //echo "mysql_connect($host, $user, $pass)";

           
ob_flush();
           
//$conn = mysql_connect($host, $user, $pass) or die("Can't connect because ". mysql_error());
           
if (!($conn=mysql_connect($host, $user, $pass)))  {
               
printf("error connecting to DB by user = $user and pwd=$pass");
                exit;
            }

           
$db3 = mysql_select_db($db, $conn);// or die("Unable to connect to local database");

           
$result = mysql_query($sql);// or die ("Can't connect because ".
mysql_error()."<br>$sql");

            return
$result;

        }
//end function


function update_timer()
    {
     global
$timeout;
     
set_time_limit($timeout);

    }
?>



logging.php
<?
//<!-- Version=2.30 Date=11/08/04 Name=logging.php -->
/*

-----------------------------------------------------------------------------

    goes to db 
    if db not available, goes to text file
*/

function do_log($client, $activity, $sql='', $success)
        {
       
//logs the client, activity, sql and success or failure of the action
        //
        /*
        $host = "192.168.100.10";
        $user = "root";
        $pass = "3JN4xM9Jvgj2VwHe";
         
        */
       
$host  = '192.168.160.31';   
       
$user  = 'rume';
       
$pass  = 'RumE2#$w';
       
$db     = "loggingdb";
         
       
$err = 0;
           
//echo "commnecing connection to local db<br>";
             
           
if (!($conn=mysql_connect($host, $user, $pass)))  {
               
$err = mysql_errno();
            }
            if (!
$db3=mysql_select_db($db, $conn)){ //or die("Unable to connect to local database");
               
$err = mysql_errno();
            }
             
            if (
$err != 0){
             
             
//database is not available or can't be connected to at the moment
             
write_log($client, $activity, $sql, $success);
             
            }else{
               
$time = time();
             
//enter the data into the log table   
             
$sql = "insert into logg (client, sql, activity, success, unix_timestamp) values ('$client','$sql','$activity','$success',$time)"
               
//echo $sql;
             
$result = mysql_query($sql) or die ("Can't connect because ". mysql_error()."<br>$sql");
             
$err = mysql_errno();
       
//if ($err != 0){
           
write_log($client, $activity, $sql, $success);     
       
//}// end if
     
     
}// end if
             
       
}//end function     
         
         
function write_log($client, $activity, $sql, $success)
        {
           
//write the text log
           
$time = time();
           
$filename = "C:\\apisonline.com\\html\\scripts\\logs\\test.log";
             
           
$somecontent = "Client\t$client.\nActivity\t$activity\nSQL\t:$sql\nSuccess:\t$success($time)\n\n";
                 
               
// Let's make sure the file exists and is writable first.
               
if (is_writable($filename)) {
                 
                   if (!
$handle = fopen($filename, 'a')) {
                         
//echo "Cannot open file ($filename)";
                         //exit;
                   
}
                 
                   
// Write $somecontent to our opened file.
                   
if (fwrite($handle, $somecontent) === FALSE) {
                       
//echo "Cannot write to file ($filename)";
                       //exit;
                   
}
                   
                   
//echo "Success, wrote ($somecontent) to file ($filename)";
                   
                   
fclose($handle);
     
            }
// end if         
         
       
}// end function

?>



A class for sending email; it has support for To:, Cc:, Bcc: and Reply-To: headers. It requires that you have sendmail installed.
Categories : Email, PHP Classes, PHP
PHP MIME Decoder. This class decodes Mime Encoded email message. Attachments are stored in a director. Works with Multipart/alternative, multipart/mixed etc. see http://p3mail.com for example.
Categories : PHP, PHP Classes, Email
phpEasyMail: An easy way to send data from HTML-forms via EMail.
Categories : Email, HTML and PHP, Complete Programs, PHP
Protect your mailto: email addresses from bots - pure PHP
Categories : PHP, Email, Security
Solution to those 'tell-a-friend' type email issues
Categories : PHP, Email, Databases, MySQL
EAvalidator - This class can be used to validate an e-mail address by checking its domain.
Categories : PHP, PHP Classes, Email, Regexps
simple script to send emails via a html-form to different users
Categories : Email, MySQL, PHP, Databases
Formit 1.0. PHP Very easy to implement form-template(s) to email script. Works with multiple templates and HTML-format email. Only one file!
Categories : PHP, Email, HTML
Sample WML Mailer
Categories : PHP, WAP, WML, Email
AITSH Mail
Categories : Complete Programs, Email, PHP
Mail-lib provides a simple interface to the sendmail program. Note: you must actually have sendmail on your machine (sorry windows NT users).
Categories : Algorithms, Email, PHP
cPanel Email Accounts Creator
Categories : PHP, PHP Classes, Email, Form Processing, Web Services
Example of function to send out email if error occurs
Categories : PHP, Email, Debugging, Errors and Logging
A web-based php3 IMAP email client supporting address books, attachements (downloading and sending), LDAP searching, and much much more.
Categories : Email, PHP, LDAP
Customer feedback or simple emailer - A PHP script that enables your visitors to send you emails.
Categories : PHP, Email, Form Processing
 Joseph Crawford wrote : 1196
This is some nice code ;)

i have something i will post soon that does something 
similar but rather than a pop mailbox it connects to nntp 
news servers ;)
 
 aung soe wrote : 1204
I have tested source code.
It is a good one.
but, when return `+OK......` php give error and nothing do.
Furthermore, There are undefined functions.
I think left to upload. :P
 
 Bertha Ferrer wrote : 1686
Thank you very much. You have saved my life with this 
code. God bless you. It works perfectly and it is very 
easy to work with.
 
 Satyapal Bhardwaj wrote : 1782
The script uses a function do_log but it is not defined in it. Need help for this. Will be very grateful
 
 not yet wrote : 1842
Thank you for this code,
I have a question.
Can I connect printer to print email automatically when received?  
 
 bastien koert wrote : 1843
The logging functions are in here

<?
//<!-- Version=2.30 Date=11/08/04 Name=logging.php -->
/*

-----------------------------------------------------------------------------

    goes to db 
    if db not available, goes to text file
*/

function do_log($client$activity$sql=''$success)
        {
        
//logs the client, activity, sql and success or failure of the action
        //
        /*
        $host = "192.168.100.10";
        $user = "root";
        $pass = "3JN4xM9Jvgj2VwHe";
        
        */
        
$host  '192.168.160.31';  
        
$user  'rume';
        
$pass  'RumE2#$w';
        
$db     "loggingdb";
        
        
$err 0;
            
//echo "commnecing connection to local db<br>";
            
            
if (!($conn=mysql_connect($host$user$pass)))  {
                
$err mysql_errno();
            }
            if (!
$db3=mysql_select_db($db$conn)){ //or die("Unable to connect to local database");
                
$err mysql_errno();
            }
            
            if (
$err != 0){
            
              
//database is not available or can't be connected to at the moment
              
write_log($client$activity$sql$success);
            
            }else{
               
$time time();
              
//enter the data into the log table   
              
$sql "insert into logg (client, sql, activity, success, unix_timestamp) values
 ('
$client','$sql','$activity','$success',$time)"
               
//echo $sql;
              
$result mysql_query($sql) or die ("Can't connect because "mysql_error()."<br>$sql");
              
$err mysql_errno();
        
//if ($err != 0){
            
write_log($client$activity$sql$success);    
        
//}// end if
     
      
}// end if
            
        
}//end function     
        
        
function write_log($client$activity$sql$success)
        {
            
//write the text log
            
$time time();
            
$filename "C:\\apisonline.com\\html\\scripts\\logs\\test.log";
            
            
$somecontent "Client\t$client.\nActivity\t$activity\nSQL\t:$sql\nSuccess:\t$success($time)\n\n";
                
                
// Let's make sure the file exists and is writable first.
                
if (is_writable($filename)) {
                
                   if (!
$handle fopen($filename'a')) {
                         
//echo "Cannot open file ($filename)";
                         //exit;
                   
}
                
                   
// Write $somecontent to our opened file.
                   
if (fwrite($handle$somecontent) === FALSE) {
                       
//echo "Cannot write to file ($filename)";
                       //exit;
                   
}
                   
                   
//echo "Success, wrote ($somecontent) to file ($filename)";
                   
                    
fclose($handle);
    
            }
// end if        
        
        
}// end function

?>
 
 Boaz Yahav wrote : 1844
I've added the missing code the the code example.
 
 Deepa m wrote : 1855
Thank you very much for your code.
I get "ERR cleartext logins disabled" what does it mean?
 
 Kunto Wb wrote :1871
Thanks a lot Bastien, you sir, has helped me a lot. 
Hope your beer get colder tonight :D
A question if I may, what's the best way to get html formatted message from these functions?
I have tried several time with string formatting after implode, but the result always differ from time to time, depending on the sender's webmail. 
As you may guess I m still learning, so your advice will be really helpful there, thanks again!