Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Rhinorhino on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Direction on a CRM application? Mail stored in MySQL 1

Status
Not open for further replies.

jimoblak

Instructor
Joined
Oct 23, 2001
Messages
3,620
Location
US
I am considering the creation of a basic CRM web application to manage messages and responses sent to a primary web site address (ex: info@mydomain.com). Since many sites have a general address of info@somedomain.com, it is difficult to direct messages to the appropriate sales/customer service/technical support departments. The user that accepts mail at the primary address may forward it on to two different departments using plain mail clients like Outlook and GroupWise but then no one will know who responded to the customer unless everyone copies everyone else by email: this gets messy.

I want to create an application that dumps emails into a MySQL database as each one is received. The database would then send an alert to a mailbox manager (human), who will briefly review the email and flag the message for delivery to the appropriate department (or multiple departments). The database would then monitor and log any responses sent to the customer from the assigned departments. As soon as a response is sent, the message is flagged as answered so that no one else sends a repeated message.

It is no problem to send emails with PHP's mail() function but I am new to receiving emails. Can anyone suggest a place for me to look on how to push mail for a POP account into a MySQL database using PHP? ...or does anyone know of a good open source project that does something similar? I am finding some good leads from Google now but wondered if anyone had a preferred way of doing this or a preferred out-of-the-box open source solution.

- - picklefish - -
Why is everyone in this forum responding to me as picklefish?
 
Personally I use POP3Client.pm for perl for the one application which I have that receives mail.

It's a CPAN thing you can find here

But apparently PHP has all the functions built in for both POP3 and IMAP servers (as it warns at the beginning of the page, ignore the names, they're not limited to IMAP servers)...
 
I'm lost. Does PHPmailer open POP mail?

- - picklefish - -
Why is everyone in this forum responding to me as picklefish?
 
No. But in my experience there's no better way to send mail through PHP.
 
I have pretty good beta code that 'reads' the email and dumps it to a db table after parsing it...I don't have anything in there to notify a user or to mail it onwards, but those are pretty minor.

Willing to share the code if you;re interested

Bastien

Cat, the other other white meat
 
That would be very generous Bastien. That is exactly the part that I am stuck on (although I have yet to fully review to see if that has solved the issue yet).

I am developing a CMS that can be seen at
I plan to offer the source sometime soon (sourceforge.net) so if you don't mind passing anything along that may become part of it, please share.

If the code is too much for a forum posting, I can be reached at spamjim@yahoo.com

- - picklefish - -
Why is everyone in this forum responding to me as picklefish?
 
This code is designed to run from a cron. Any current output is strictly for debugging and can be turned off when the app works.

Hope the editing(to protect the guilty, in this case me ;) ) won't break the code too much


main code page
Code:
<?
/*
	Custom mail reader
*/

//session_start();

require("email_functions.php");
require("../includes/generate_ids.php");

global $timeout, $error, $buffer;


//-----------------------------------------------------------------------------
//                 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.mydomain.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 				= 'username';
 $pass  				= 'password';
 $KeyUserID			= 'KeyName';												//		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) )
    {
        echo "<H1>Login Failed: $error</H1>\n";
        exit;
    }

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

    if ($Count < 1)
    {
        //echo "Login OK: Inbox EMPTY<BR>\n";
        die();
    } else {
        echo "Login OK: Inbox contains [$Count] messages<BR>\n";
        $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
		   */
		  	$insert = message_details($MsgOne, $i);  
	  	
		  	//mark the message for deletion
		  	if ($insert == true){
		  	  delete ($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)
		{
		/*
    	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($value, "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
        
        //if ($TIRSFlag == true){ echo "$value<br>"; }
          
      }// 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);  
      
      }// end if 		
		}// end function 

//-----------------------------------------------------------------------------
//									Create the incident
//-----------------------------------------------------------------------------		
function create_incident($subject, $message_body)
		{
			 // declarations for function
			 	$tirs_format = "Save";									// default tirs option is to save the url and not download the file
				$inc_sec_off = '';
				$inc_site    = '';
				$inc_type    = '';
				$inc_issue   = '';
				$inc_http    = '';			 
			  $options     = '';
			  
			 // adjust path for local dir on host and for test here in uxbridge
			 $local_path  = "C:\\Documents and Settings\\RuMe\\Desktop\\";
 
		   // take the subject apart to get the individual elements
		     
		     //Subject: IncidentNo: 155094 / Theft / 07/14/2004 09:38:23 AM EST   (format of subject line)
		     
		   $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 lfcr 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 Site"))>1)					{  $inc_site  			= 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

       $filename  = $inc_https[1];
       
       $narrative = "$inc_sec_off~$inc_date~$inc_time~$message_body~^";
       
       
       
       	   
		   // generate new incident id
		   $new_inc_id 		= "IN".GenerateID("incident_id", "incident_id");
		   $evi_sql 			= "select max(evidence_serial)+1 from evidence";
		   $result_evi    = conn($evi_sql);
		   
		   if (mysql_num_rows($result_evi)==1){
		      $row				= mysql_fetch_array($result_evi);
		      $new_evi_id	= $row[0];
		   }// end if
		   
		  
		   //just a quick date to differentiate the test records
		   //$now = date("M-d H:i:s");
		   
		   // insert incident email info into incident table
		   $sql_inc = "insert into incident(incident_number, incident_id, open_date, type_of_incident, security_agent_name, case_source, search_target, 
		   				 		 incident_date, incident_time, day_of_week, who_notified, date_notified, time_notified, record_deleted, last_access_id, 
		   				 		 last_access_timestamp, summary) values (
		           		 '$new_inc_id', '$incident_no-$now', '$inc_date', '$incident_type', '$inc_sec_off', 'TIRS', '$store_loc', '$inc_date',
		           		 '$inc_date $inc_time', '$weekday', 'APIS', '$inc_date', '$inc_date $inc_time', 'NO', 'TIRS', date_format(NOW(),'%Y-%m-%d %H:%i:%s'),'$narrative');";
		    
		   //echo $sql_inc."<br>";
		   //execute sql call
		   $result = conn($sql_inc);
	   
	     $sql_evi = "insert into evidence (evidence_number, evidence_serial, ref_number, description, created_by, created_on, filename, issue_id, issue_date, 
	                 record_deleted, evidence_location) values (
	                 'EV$new_evi_id', $new_evi_id, '$new_inc_id','Wav file from TIRS','TIRS',date_format(NOW(),'%Y-%m-%d %H:%i'),'$filename','TIRS',
	                 date_format(NOW(),'%Y-%m-%d %H:%i'), 'NO','<a href=\'$inc_http\' target=\'_blank\'>$filename</a>')";
		   
		   //echo $sql_evi."<br>";
		   //execute sql call
		   $result1 = conn($sql_evi);
		   
		   
		   
		  if ($result && $result1){  
		    return true;
		  }// end if		   
		  		   

		}// end function

   
     
?>

This is the functions page...

Code:
<?
//
//                  Version : Aug  30, 2004
//
//   Modifications :
//    Aug  30,2004 : Base Version
//
//
//-----------------------------------------------------------------------------

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

        
        if(!$fp = fsockopen("$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 false;
        }
        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)
		{	
		//additions to file:
		/*
		  add code to decide what server/db to tag when inserting the data
		*/
		
		
		
		$host = "100.100.100.100";
		$user = "user";
		$pass = "password";
		
		
		$db 	= "mydb";;
		
		
			if (!($conn=mysql_connect($host, $user, $pass)))  {
			    printf("error connecting to DB by user = $username and pwd=$pwd");
			    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());

			return $result;
			
		}//end function 
		
function update_timer()
    {
     global $timeout;
     set_time_limit($timeout);
    
    }			
?>

Bastien

Cat, the other other white meat
 
The functions page has a cliffhanger ending but you have given plenty to chew on. Thanks!

- - picklefish - -
Why is everyone in this forum responding to me as picklefish?
 
Bugger! Sorry about that...here is the rest

Code:
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)
		{	
		//additions to file:
		/*
		  add code to decide what server/db to tag when inserting the data
		*/
		
		
		
		$host = "192.168.100.10";
		$user = "root";
		$pass = "3JN4xM9Jvgj2VwHe";
		
		
		$db 	= "shadow_apis_six_flags_230";
		
			//echo "commnecing connection to local db<br>";
			
			if (!($conn=mysql_connect($host, $user, $pass)))  {
			    printf("error connecting to DB by user = $username and pwd=$pwd");
			    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());

			return $result;
			
		}//end function 
		
function update_timer()
    {
     global $timeout;
     set_time_limit($timeout);
    
    }			
?>

Bastien

Cat, the other other white meat
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top