Guest Geoff Posted September 12, 2010 Posted September 12, 2010 I have tried, but can't seem to get my php pipe to work. Any suggestions. #!/usr/bin/php -q <?php include("./main-inc.php"); try{ //fetchdata from stdin $data = file_get_contents("php://stdin"); // extract the body // NOTE: a properly formatted email's first empty line defines the separation between the headers and the message body list($data, $body) = explode("\n\n", $data, 2); // explode on new line $data = explode("\n", $data); // define a variable map of known headers $patterns = array( 'Return-Path', 'X-Original-To', 'Delivered-To', 'Received', 'To', 'Message-Id', 'Date', 'From', 'Subject', ); // define a variable to hold parsed headers $headers = array(); // loop through data foreach ($data as $data_line) { // for each line, assume a match does not exist yet $pattern_match_exists = false; // check for lines that start with white space // NOTE: if a line starts with a white space, it signifies a continuation of the previous header if ((substr($data_line,0,1)==' ' || substr($data_line,0,1)=="\t") && $last_match) { // append to last header $headers[$last_match][] = $data_line; continue; } // loop through patterns foreach ($patterns as $key => $pattern) { // create preg regex $preg_pattern = '/^' . $pattern .': (.*)$/'; // execute preg preg_match($preg_pattern, $data_line, $matches); // check if preg matches exist if (count($matches)) { $headers[$pattern][] = $matches[1]; $pattern_match_exists = true; $last_match = $pattern; } } // check if a pattern did not match for this line if (!$pattern_match_exists) { $headers['UNMATCHED'][] = $data_line; } } $body = $body; $from = $headers["From"][0]; $to = $headers["To"][0]; function extract_emails_from($string){ preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches); return $matches[0]; } $to = extract_emails_from($to); $from = extract_emails_from($from); $to = $to[0]; $from = $from[0]; .. } catch(Exception $err) { logToFile(PHP_ACCESS_DIR."db/errors.log", $err); }
Guest Geoff Posted September 14, 2010 Posted September 14, 2010 I have tried and tried, but the mail still keeps 'bouncing' back.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now