summaryrefslogtreecommitdiff
path: root/EMailMessage.php
diff options
context:
space:
mode:
authoruckelman <uckelman@nomic.net>2010-03-17 19:33:29 +0000
committeruckelman <uckelman@nomic.net>2010-03-17 19:33:29 +0000
commit96bd748c06255cbeab197af98683d640e036015f (patch)
tree78ce3be6d494544f28f415c592073a17482598da /EMailMessage.php
Initial versions.
git-svn-id: https://vassalengine.svn.sourceforge.net/svnroot/vassalengine/site-src/trunk@6616 67b53d14-2c14-4ace-a08f-0dab2b34000c
Diffstat (limited to 'EMailMessage.php')
-rw-r--r--EMailMessage.php73
1 files changed, 73 insertions, 0 deletions
diff --git a/EMailMessage.php b/EMailMessage.php
new file mode 100644
index 0000000..9d921a9
--- /dev/null
+++ b/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);
+ }
+}
+
+?>