Hi,

Could someone look/try my code below.  It grabs emails
from a mailbox and grabs emails within the BODY of the
email and sends the details to a database to match and
flag an account.

It works fine on 1 email, but if you get multiple
emails in the inbox in will revert to grabbing ONLY
the domain of the mailserver, and do not know why.

To try the code simply.

- Create a PHP file on your webserver, (e.g. pop.php)
- Copy the code below into it
- Change the database usr, pwd and db settings
- user, pass and mailserver settings
- Savie it. :)

Than....

- Make sure the mailbox you are setting up in the
script is an EMPTY mailbox.  Please be aware if you
run the script on a full mailbox the script deletes
the emails in the inbox after it is ran so be careful.

- I suggest you create a new mailbox and use that.
- Send an email to the mailbox like this:

To: [EMAIL PROTECTED]
Subject: anything
Body: [EMAIL PROTECTED]

- Feel free to add other text, make sure an email
address is in the Body
- Now run the script on the one email in the inbox, it
will grab and echo the result
- Now send two emails with 2 different email addresses
in the Body
- Runt eh script, it should fail badly and not even
echo the correct address

Why is this?

It's not just the matter of echoing correctly I need
it to to be put into a mysql query correctly also to
flag accounts.  On 1 email it works fine, one more
than 1 it fails mysql.

Could someone take a look and see what I have done
wrong please?

Thanks, Jerry



<?

            $usr = "usr";
            $pwd = "pass";
            $db = "mydb";
            $host = "localhost";

            $cid = mysql_connect($host,$usr,$pwd);
            mysql_select_db($db);

global $IP_RegExp_Match, $Host_RegExp_Match,
$Email_RegExp_Match;
$IP_RegExp_Match =
'\\[?[0-9]{1,3}(\\.[0-9]{1,3}){3}\\]?';
$Host_RegExp_Match = '(' . $IP_RegExp_Match .
    '|[0-9a-z]([-.]?[0-9a-z])*\\.[a-z][a-z]+)';
$Email_RegExp_Match = '[0-9a-z]([-_.+]?[0-9a-z])*(%' .

$Host_RegExp_Match .
    ')?@' . $Host_RegExp_Match;


$user = 'emailuser';
$pass = 'emailpass';

$MAILSERVER =
"{mail.mymailserver.com:110/pop3/notls}"; //Para POP3

$mbox = @imap_open ($MAILSERVER,$user,$pass) or die
("Sorry can't connect - please check your settings");

$check = imap_mailboxmsginfo($mbox);
echo "Messages before delete: " . $check->Nmsgs . "<br
/>\n";

$headers = imap_headers($mbox);

if ($headers == false) {
   echo "There are no messages to be deleted.<br
/>\n";
} else {
   while (list ($key, $val) = each ($headers)) {


   for ($i = 1; $i <= imap_num_msg($mbox); $i++)
{
   $header = imap_headerinfo($mbox, $i, 80, 80);
   $messageBody = imap_body($mbox, $i);

$messageBody = strip_tags($messageBody,
'<a><b><i><u>');
$messageBody = str_replace("\'", "", $messageBody);
$messageBody = str_replace("\\", "", $messageBody);
$messageBody = str_replace("\"", "", $messageBody);
$messageBody = str_replace("3D", "", $messageBody);

    global $color, $Email_RegExp_Match;
    $sbody     = $messageBody;
    $addresses = array();

    /* Find all the email addresses in the body */
    while(eregi($Email_RegExp_Match, $sbody, $regs)) {
        $addresses[$regs[0]] = $regs[0];
        $start = strpos($sbody, $regs[0]) +
strlen($regs[0]);
        $sbody = substr($sbody, $start);

    }
    /* Replace each email address with a compose URL
*/
    foreach ($addresses as $email) {
        $body = str_replace($email, $comp_uri, $body);
   mysql_query ("update users SET emailerror='y' WHERE
email='$email'") or die ("No");

};

imap_delete($mbox, 1);
$check = imap_mailboxmsginfo($mbox);
imap_expunge($mbox);
$check = imap_mailboxmsginfo($mbox);

    };

}};

$check = imap_mailboxmsginfo($mbox);
echo "Messages after delete: " . $check->Nmsgs . "<br
/>\n";


if ($email) {

echo "Email: " . $email . "<br>\n";

}


imap_close($mbox);
?>



http://personals.yahoo.com.au - Yahoo! Personals
New people, new possibilities. FREE for a limited time.

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

Reply via email to