Файловый менеджер - Редактировать - /var/www/axolotl/data/www/axolotls.ru/www/bitrix/modules/esol.importexportexcel/lib/mail/mail_header.php
Назад
<?php namespace Bitrix\KdaImportexcel; use Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); class MailHeader { var $arHeader = Array(); var $arHeaderLines = Array(); var $strHeader = ""; var $bMultipart = false; var $content_type, $boundary, $charset, $filename, $MultipartType="mixed"; public $content_id = ''; function ConvertHeader($encoding, $type, $str, $charset) { if(strtoupper($type)=="B") $str = base64_decode($str); else $str = quoted_printable_decode(str_replace("_", " ", $str)); $str = \Bitrix\KdaImportexcel\MailUtil::ConvertCharset($str, $encoding, $charset); return $str; } function DecodeHeader($str, $charset_to, $charset_document) { while(preg_match('/(=\?[^?]+\?(Q|B)\?[^?]*\?=)(\s)+=\?/i', $str)) $str = preg_replace('/(=\?[^?]+\?(Q|B)\?[^?]*\?=)(\s)+=\?/i', '\1=?', $str); if(!preg_match("'=\?(.*)\?(B|Q)\?(.*)\?='i", $str)) { if(strlen($charset_document)>0 && $charset_document!=$charset_to) $str = \Bitrix\KdaImportexcel\MailUtil::ConvertCharset($str, $charset_document, $charset_to); } else { $str = preg_replace_callback( "'=\?(.*?)\?(B|Q)\?(.*?)\?='i", create_function('$m', "return \Bitrix\KdaImportexcel\MailHeader::ConvertHeader(\$m[1], \$m[2], \$m[3], '".AddSlashes($charset_to)."');"), $str ); } return $str; } function Parse($message_header, $charset) { if(preg_match("'content-type:.*?charset=([^\r\n;]+)'is", $message_header, $res)) $this->charset = strtolower(trim($res[1], ' "')); elseif($this->charset=='' && defined("BX_MAIL_DEFAULT_CHARSET")) $this->charset = BX_MAIL_DEFAULT_CHARSET; $ar_message_header_tmp = explode("\r\n", $message_header); $n = -1; $bConvertSubject = false; for($i = 0, $num = count($ar_message_header_tmp); $i < $num; $i++) { $line = $ar_message_header_tmp[$i]; if(($line[0]==" " || $line[0]=="\t") && $n>=0) { $line = ltrim($line, " \t"); $bAdd = true; } else $bAdd = false; $line = self::DecodeHeader($line, $charset, $this->charset); if($bAdd) $this->arHeaderLines[$n] = $this->arHeaderLines[$n].$line; else { $n++; $this->arHeaderLines[] = $line; } } $this->arHeader = Array(); for($i = 0, $num = count($this->arHeaderLines); $i < $num; $i++) { $p = strpos($this->arHeaderLines[$i], ":"); if($p>0) { $header_name = strtoupper(trim(substr($this->arHeaderLines[$i], 0, $p))); $header_value = trim(substr($this->arHeaderLines[$i], $p+1)); $this->arHeader[$header_name] = $header_value; } } $full_content_type = $this->arHeader["CONTENT-TYPE"]; if(strlen($full_content_type)<=0) $full_content_type = "text/plain"; if(!($p = strpos($full_content_type, ";"))) $p = strlen($full_content_type); $this->content_type = trim(substr($full_content_type, 0, $p)); if(strpos(strtolower($this->content_type), "multipart/") === 0) { $this->bMultipart = true; if (!preg_match("'boundary\s*=(.+);'i", $full_content_type, $res)) preg_match("'boundary\s*=(.+)'i", $full_content_type, $res); $this->boundary = trim($res[1], '"'); if($p = strpos($this->content_type, "/")) $this->MultipartType = substr($this->content_type, $p+1); } if($p < strlen($full_content_type)) { $add = substr($full_content_type, $p+1); if(preg_match("'name=([^;]+)'i", $full_content_type, $res)) $this->filename = trim($res[1], '"'); } $cd = $this->arHeader["CONTENT-DISPOSITION"]; if (strlen($cd) > 0) { if (preg_match("'filename=([^;]+)'i", $cd, $res)) { $this->filename = trim($res[1], '"'); } else if (preg_match("'filename\*=([^;]+)'i", $cd, $res)) { list($fncharset, $fnstr) = preg_split("/'[^']*'/", trim($res[1], '"')); $this->filename = \Bitrix\KdaImportexcel\MailUtil::ConvertCharset(rawurldecode($fnstr), $fncharset, $charset); } } if($this->arHeader["CONTENT-ID"]!='') $this->content_id = trim($this->arHeader["CONTENT-ID"], '"<>'); $this->strHeader = implode("\r\n", $this->arHeaderLines); return true; } function IsMultipart() { return $this->bMultipart; } function MultipartType() { return strtolower($this->MultipartType); } function GetBoundary() { return $this->boundary; } function GetHeader($type) { return $this->arHeader[strtoupper($type)]; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.8 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка