*/ class IncomingEmailParser { var $aEmailInfo; var $sEmailContent; /** * Main constructor * * @access public * @return void */ function IncomingEmailParser() { $this->sEmailContent = $this->_get_email_content(); $this->aEmailInfo = $this->_get_email_info(); } /** * Call this method, if you want to get Twitter email headers parsed. * * @access public * @return string */ function setup_twitter_info() { $this->aEmailInfo['twitter_sender_username'] = ''; $this->aEmailInfo['twitter_receiver_username'] = ''; $this->aEmailInfo['twitter_direct_message'] = ''; $from = $this->aEmailInfo['from']; $headers = $this->aEmailInfo['headers']; $message = str_replace("=\n", '', $this->aEmailInfo['message']); # is message coming from twitter? if (is_integer(strpos($from, 'twitter'))) { # direct message if ($this->is_direct_message()) { preg_match_all('/X-Twittersenderscreenname: ([a-zA-Z0-9_].*)/', $headers, $match); $this->aEmailInfo['twitter_sender_username'] = strtolower($match[1][0]); preg_match_all('/X-Twittersendername: (.*)/', $headers, $match); $this->aEmailInfo['twitter_sender_name'] = $match[1][0]; preg_match_all('/X-Twittersenderid: ([0-9].*)/', $headers, $match); $this->aEmailInfo['twitter_sender_id'] = $match[1][0]; preg_match_all('/Sender: (.*)/', $headers, $match); $this->aEmailInfo['twitter_sender_email'] = str_replace(array('Twitter '), array('', '@', ''), $match[1][0]); preg_match_all('/X-Twitterrecipientscreenname: ([a-zA-Z0-9_].*)/', $headers, $match); $this->aEmailInfo['twitter_receiver_username'] = strtolower($match[1][0]); preg_match_all('/X-Twitterrecipientname: (.*)/', $headers, $match); $this->aEmailInfo['twitter_receiver_name'] = $match[1][0]; preg_match_all('/X-Twitterrecipientid: ([0-9].*)/', $headers, $match); $this->aEmailInfo['twitter_receiver_id'] = $match[1][0]; $aMessage = split("\n", $message); $this->aEmailInfo['twitter_direct_message'] = $aMessage[6]; } elseif ($this->is_follow_message()) { preg_match_all('/X-Twittersenderscreenname: ([a-zA-Z0-9_].*)/', $headers, $match); $this->aEmailInfo['twitter_sender_username'] = strtolower($match[1][0]); preg_match_all('/X-Twittersendername: (.*)/', $headers, $match); $this->aEmailInfo['twitter_sender_name'] = $match[1][0]; preg_match_all('/X-Twittersenderid: ([0-9].*)/', $headers, $match); $this->aEmailInfo['twitter_sender_id'] = $match[1][0]; preg_match_all('/X-Twitterrecipientscreenname: ([a-zA-Z0-9_].*)/', $headers, $match); $this->aEmailInfo['twitter_receiver_username'] = strtolower($match[1][0]); preg_match_all('/X-Twitterrecipientname: (.*)/', $headers, $match); $this->aEmailInfo['twitter_receiver_name'] = $match[1][0]; preg_match_all('/X-Twitterrecipientid: ([0-9].*)/', $headers, $match); $this->aEmailInfo['twitter_receiver_id'] = $match[1][0]; } } } function is_follow_message() { return is_integer(strpos($this->aEmailInfo['from'], 'twitter-follow-')); } function is_direct_message() { return is_integer(strpos($this->aEmailInfo['from'], 'twitter-dm-')); } /** * Read data from stdin * * @access private * @return string */ function _get_email_content() { $sEmail = ''; $fd = fopen("php://stdin", "r"); while (!feof($fd)) { $sEmail .= fread($fd, 1000000); } fclose($fd); return $sEmail; } /** * Get email info in array format * * @access private * @return array */ function _get_email_info() { $lines = explode("\n", $this->sEmailContent); $aEmailInfo['from'] = ''; $aEmailInfo['to'] = ''; $aEmailInfo['subject'] = ''; $aEmailInfo['message'] = ''; $aEmailInfo['headers'] = ''; $splittingheaders = TRUE; for ($i=0; $iaEmailInfo['from'] ), $aAccessList ) ) { return false; } // Check password, if it is passed as argument // Password must be given on email subject line and compare with argument password! if( $sPassword != '' ) { $aSubject = explode( ' ', $this->aEmailInfo['subject'] ); // compare last subject string to argument password return $aSubject[(count($aSubject)-1)] == $sPassword; } return true; } } ?>