*
* This file contains functions needed to handle headers in mime messages.
*
- * @copyright © 2003-2005 The SquirrelMail Project Team
+ * @copyright © 2003-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
*/
var $priority = 3;
/**
+ * Disposition notification for requesting message delivery notification (MDN)
* @var mixed
*/
var $dnt = '';
+ /**
+ * Delivery notification (DR)
+ * @var mixed
+ */
+ var $drnt = '';
/**
* @var mixed
*/
* @var mixed
*/
var $mlist = array();
+ /**
+ * SpamAssassin 'x-spam-status' header
+ * @var mixed
+ */
+ var $x_spam_status = array();
/**
* Extra header
* only needed for constructing headers in delivery class
$this->references = $value;
break;
case 'x-confirm-reading-to':
- case 'return-receipt-to':
case 'disposition-notification-to':
$value = $this->stripComments($value);
$this->dnt = $this->parseAddress($value);
break;
+ case 'return-receipt-to':
+ $value = $this->stripComments($value);
+ $this->drnt = $this->parseAddress($value);
+ break;
case 'mime-version':
$value = $this->stripComments($value);
$value = str_replace(' ', '', $value);
$value = $this->stripComments($value);
$this->mlist('id', $value);
break;
+ case 'x-spam-status':
+ $this->x_spam_status = $this->parseSpamStatus($value);
+ break;
default:
break;
}
$this->mlist[$field] = $res_a;
}
+ /**
+ * Parses the X-Spam-Status header
+ * @param string $value
+ */
+ function parseSpamStatus($value) {
+ // Header value looks like this:
+ // No, score=1.5 required=5.0 tests=MSGID_FROM_MTA_ID,NO_REAL_NAME,UPPERCASE_25_50 autolearn=disabled version=3.1.0-gr0
+
+ $spam_status = array();
+
+ if (preg_match ('/^(No|Yes),\s+score=(-?\d+\.\d+)\s+required=(-?\d+\.\d+)\s+tests=(.*?)\s+autolearn=(.*?)\s+version=(.+?)$/', $value, $matches)) {
+ // full header
+ $spam_status['bad_format'] = 0;
+ $spam_status['value'] = $matches[0];
+ // is_spam
+ if (isset($matches[1])
+ && strtolower($matches[1]) == 'yes') {
+ $spam_status['is_spam'] = true;
+ } else {
+ $spam_status['is_spam'] = false;
+ }
+
+ // score
+ $spam_status['score'] = $matches[2];
+
+ // required
+ $spam_status['required'] = $matches[3];
+
+ // tests
+ $tests = array();
+ $tests = explode(',', $matches[4]);
+ foreach ($tests as $test) {
+ $spam_status['tests'][] = trim($test);
+ }
+
+ // autolearn
+ $spam_status['autolearn'] = $matches[5];
+
+ // version
+ $spam_status['version'] = $matches[6];
+ } else {
+ $spam_status['bad_format'] = 1;
+ $spam_status['value'] = $value;
+ }
+ return $spam_status;
+ }
+
/**
* function to get the address strings out of the header.
* example1: header->getAddr_s('to').
return $this->content_type->properties;
}
}
-
-?>