123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- /**
- * AddressStructure.class.php
- *
- * This file contains functions needed to extract email address headers from
- * mime messages.
- *
- * @copyright 2003-2025 The SquirrelMail Project Team
- * @license http://opensource.org/licenses/gpl-license.php GNU Public License
- * @version $Id$
- * @package squirrelmail
- * @subpackage mime
- * @since 1.3.2
- */
- /**
- * Class used to work with email address headers
- * @package squirrelmail
- * @subpackage mime
- * @since 1.3.2
- */
- class AddressStructure {
- /**
- * Personal information
- * @var string
- */
- var $personal = '';
- /**
- * @todo check use of this variable. var is not used in class.
- * @var string
- */
- var $adl = '';
- /**
- * Mailbox name.
- * @var string
- */
- var $mailbox = '';
- /**
- * Server address.
- * @var string
- */
- var $host = '';
- /**
- * @todo check use of this variable. var is not used in class.
- * @var string
- */
- var $group = '';
- /**
- * Return address information from mime headers.
- * @param boolean $full return full address (true) or only personal if it exists, otherwise email (false)
- * @param boolean $encoded (since 1.4.0) return rfc2047 encoded address (true) or plain text (false).
- * @param boolean $unconditionally_quote (since 1.4.21/1.5.2) when TRUE, always quote the personal part, whether or not it is encoded, otherwise quoting is only added if the personal part is not encoded
- *
- * @return string
- */
- function getAddress($full = true, $encoded = false, $unconditionally_quote = FALSE) {
- $result = '';
- if (is_object($this)) {
- $email = ($this->host ? $this->mailbox.'@'.$this->host
- : $this->mailbox);
- $personal = trim($this->personal);
- $is_encoded = false;
- if (preg_match('/(=\?([^?]*)\?(Q|B)\?([^?]*)\?=)(.*)/i',$personal,$reg)) {
- $is_encoded = true;
- }
- if ($personal) {
- if ($encoded && !$is_encoded) {
- $personal_encoded = encodeHeader('"' . $personal . '"');
- if ($personal !== $personal_encoded) {
- $personal = $personal_encoded;
- } else {
- //FIXME: this probably adds quotes around an encoded string which itself is already quoted
- $personal = '"' . $this->personal . '"';
- }
- } else {
- if (!$is_encoded || $unconditionally_quote) {
- $personal = '"' . $this->personal . '"';
- }
- }
- $addr = ($email ? $personal . ' <' .$email.'>'
- : $this->personal);
- $best_dpl = $this->personal;
- } else {
- $addr = $email;
- $best_dpl = $email;
- }
- $result = ($full ? $addr : $best_dpl);
- }
- return $result;
- }
- /**
- * Shorter version of getAddress() function
- * Returns full encoded address.
- * @param boolean $unconditionally_quote (since 1.4.21/1.5.2) when TRUE, always quote the personal part, whether or not it is encoded, otherwise quoting is only added if the personal part is not encoded
- *
- * @return string
- * @since 1.4.0
- */
- function getEncodedAddress($unconditionally_quote=FALSE) {
- return $this->getAddress(true, true, $unconditionally_quote);
- }
-
- /**
- * Return just the email portion of this address
- * @return string
- * @since 1.5.2
- */
- function getEmail () {
- $r = '';
- if (is_object($this)) {
- $r = $this->host ? $this->mailbox.'@'.$this->host : $this->mailbox;
- }
- return $r;
- }
- }
|