diff options
author | uckelman <uckelman@nomic.net> | 2010-03-17 19:40:58 +0000 |
---|---|---|
committer | uckelman <uckelman@nomic.net> | 2010-03-17 19:40:58 +0000 |
commit | 369e2a89996d93b50d41c7a8482963bd0e56962a (patch) | |
tree | 822a8f9f9a79a8586ea09e26ad1c00dbc93cdc13 /src/EMailMessage.php | |
parent | 96bd748c06255cbeab197af98683d640e036015f (diff) |
Reorganized.
git-svn-id: https://vassalengine.svn.sourceforge.net/svnroot/vassalengine/site-src/trunk@6617 67b53d14-2c14-4ace-a08f-0dab2b34000c
Diffstat (limited to 'src/EMailMessage.php')
-rw-r--r-- | src/EMailMessage.php | 73 |
1 files changed, 73 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); + } +} + +?> |