public function PHPMailer::EncodeHeader in SMTP Authentication Support 7
Same name and namespace in other branches
- 5 smtp.module \PHPMailer::EncodeHeader()
- 7.2 smtp.phpmailer.inc \PHPMailer::EncodeHeader()
Encode a header string to best (shortest) of Q, B, quoted or none. @access public
Return value
string
4 calls to PHPMailer::EncodeHeader()
- PHPMailer::AddrFormat in ./
smtp.phpmailer.inc - Formats an address correctly. @access public
- PHPMailer::AttachAll in ./
smtp.phpmailer.inc - Attaches all fs, string, and binary attachments to the message. Returns an empty string on failure. @access private
- PHPMailer::CreateHeader in ./
smtp.phpmailer.inc - Assembles message header. @access public
- PHPMailer::MailSend in ./
smtp.phpmailer.inc - Sends mail using the PHP mail() function.
File
- ./
smtp.phpmailer.inc, line 1522 - The mail handler class in smtp module, based on code of the phpmailer library, customized and relicensed to GPLv2.
Class
- PHPMailer
- PHPMailer - PHP email transport class NOTE: Requires PHP version 5 or later @package PHPMailer @author Andy Prevost @author Marcus Bointon @copyright 2004 - 2009 Andy Prevost
Code
public function EncodeHeader($str, $position = 'text') {
$x = 0;
switch (strtolower($position)) {
case 'phrase':
if (!preg_match('/[\\200-\\377]/', $str)) {
// Can't use addslashes as we don't know what value has magic_quotes_sybase
$encoded = addcslashes($str, "\0..\37\\\"");
if ($str == $encoded && !preg_match('/[^A-Za-z0-9!#$%&\'*+\\/=?^_`{|}~ -]/', $str)) {
return $encoded;
}
else {
return "\"{$encoded}\"";
}
}
$x = preg_match_all('/[^\\040\\041\\043-\\133\\135-\\176]/', $str, $matches);
break;
case 'comment':
$x = preg_match_all('/[()"]/', $str, $matches);
// Fall-through
case 'text':
default:
$x += preg_match_all('/[\\000-\\010\\013\\014\\016-\\037\\177-\\377]/', $str, $matches);
break;
}
if ($x == 0) {
return $str;
}
$maxlen = 75 - 7 - strlen($this->CharSet);
// Try to select the encoding which should produce the shortest output
if (strlen($str) / 3 < $x) {
$encoding = 'B';
if (function_exists('mb_strlen') && $this
->HasMultiBytes($str)) {
// Use a custom function which correctly encodes and wraps long
// multibyte strings without breaking lines within a character
$encoded = $this
->Base64EncodeWrapMB($str);
}
else {
$encoded = base64_encode($str);
$maxlen -= $maxlen % 4;
$encoded = trim(chunk_split($encoded, $maxlen, "\n"));
}
}
else {
$encoding = 'Q';
$encoded = $this
->EncodeQ($str, $position);
$encoded = $this
->WrapText($encoded, $maxlen, TRUE);
$encoded = str_replace('=' . $this->LE, "\n", trim($encoded));
}
$encoded = preg_replace('/^(.*)$/m', " =?" . $this->CharSet . "?{$encoding}?\\1?=", $encoded);
$encoded = trim(str_replace("\n", $this->LE, $encoded));
return $encoded;
}