I have a script that checks a POP3 account, takes the mail information and stores it in the DB for each message. Then deletes the message out of the POP3 account. My problem is this script is only when you run the page its own, so there sometimes there are like 3-4 messages waiting in the POP3. Once you run the script it will add all the messages in the DB but the problem is that in each of the actual message body it will repeat itself. So im guessing the loop somewhere is messed up. Here is an example of what happends:
Message #1)
Subject: Test one
Message: Message number one
Message #2)
Subject: Test two
Message: Message number two
Message number one
Here is a bit of the code where it grabs the message, inserts in into the DB.
$mailserver=fsockopen($server,$port,&$errno,&$errstr,30);
if(!$mailserver) {
print("Error could open mail");
exit;
} else {
// STATUS
$buffer="STAT\n";
fputs($mailserver,$buffer);
$buffer=fgets($mailserver,512);
$mailsum=substr($buffer,4,2);
$mailmem=substr($buffer,6,strlen($buffer)-6);
for($msgid=1;$msgid<=$mailsum;$msgid++) {
// RETR mail
$buffer="RETR $msgid\n";
fputs($mailserver,$buffer);
$buffer=fgets($mailserver,512);
for(;;) {
$buffer=fgets($mailserver,512);
if(strcasecmp(substr($buffer,0,5),"Date:")==0) {
$maildate = substr($buffer, (strrpos($buffer, ",")-3),-16);
}
if(strcasecmp(substr($buffer,0,5),"From:")==0) {
$fromperson=substr($buffer,6,strlen($buffer)-6);
if(preg_match("/</", $fromperson)) { $fromperson = substr($buffer, (strrpos($buffer, "<")+1), -3); }
ELSE { $fromperson=substr($buffer,6,strlen($buffer)-6); }
$fromperson=htmlspecialchars($fromperson);
}
if(strcasecmp(substr($buffer,0,3),"To:")==0) {
$toperson=substr($buffer,4,strlen($buffer)-4);
$toperson=htmlspecialchars($toperson);
}
if(strcasecmp(substr($buffer,0,8),"Subject:")==0) {
$subject=substr($buffer,9,strlen($buffer)-9);
$subject=htmlspecialchars($subject);
}
if(strcmp($buffer,"\r\n")==0 || strcmp($buffer,"\n\r")==0 || strcmp($buffer,"\n\n")==0 && $maildate!=0 && $subject!=0 && $fromperson!=0) {
break;
}
}
while (substr($buffer = fgets($mailserver, 1024), 0, 3) != ".".chr(13).chr(10)) {
$message .= $buffer;
}
// SAVE MESSAGE IN DATABASE
$date = date("Y-m-d H:i:00");
$query2="INSERT INTO message (msgID, regID, fromID, toID, date, message, link, subject, actionID, complete)
VALUES ('$msgID', '$userID', '$userID', '3', '$date', '$message', '0', '$subject', 'I', 'N')";
mysql_db_query($database_name, $query2, $conn) or die ("$database_error 1");