diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/EMailMessage.php | 73 | ||||
| -rw-r--r-- | src/Message.php | 21 | 
2 files changed, 94 insertions, 0 deletions
| diff --git a/src/EMailMessage.php b/src/EMailMessage.php new file mode 100644 index 0000000..9d921a9 --- /dev/null +++ b/src/EMailMessage.php @@ -0,0 +1,73 @@ +<?php + +require_once('Mail/mimeDecode.php'); +require_once('Mail/RFC822.php'); + +require_once('Message.php'); + +class EMailMessage implements Message { + +  protected $msg; + +  public function __construct($input) { +    $this->msg = MailMessage::decode_raw_message($input); +  } + +  public function getSource() { +# FIXME: fill in! +    return null; +  } + +  public function getPostId() { +# FIXME: get from message-id to post-id database +    return null; +  } + +  public function getFrom() { +    return EMailMessage::parse_addr($this->msg->headers['from']); +  } + +  public function getSubject() { +    return $this->msg->headers['subject']; +  } +   +  public function getMessageId() { +    return $this->msg->headers['message-id']; +  } + +  public function getInReplyTo() { +    return $this->msg->headers['in-reply-to']; +  } + +  public function getReferences() { +    return $this->msg->headers['references']; +  } + +  public function getBody() { +    return $this->msg->body; +  } + +  protected static function decode_raw_message($input) { +    $params['include_bodies'] = true; +    $params['decode_bodies']  = true; +    $params['decode_headers'] = true; +    $params['input']          = $input; +    $params['crlf']           = "\r\n"; + +    $msg = Mail_mimeDecode::decode($params); + +    if (count($msg->headers) == 1 && array_key_exists(null, $msg->headers)) { +      # An empty message has one null header. +      trigger_error('No message', E_USER_ERROR); +    } + +    return $msg; +  } + +  protected static function parse_addr($s) { +    $addr = Mail_RFC822::parseAddressList($s); +    return strtolower($addr[0]->mailbox . '@' . $addr[0]->host); +  } +} + +?> diff --git a/src/Message.php b/src/Message.php new file mode 100644 index 0000000..23fa849 --- /dev/null +++ b/src/Message.php @@ -0,0 +1,21 @@ +<?php + +interface Message { +  public function getSource(); + +  public function getPostId(); + +  public function getFrom(); + +  public function getSubject(); +   +  public function getMessageId(); + +  public function getInReplyTo(); + +  public function getReferences(); + +  public function getBody(); +} + +?> | 
