$this->boundary = md5(uniqid(time()));
Если в сообщении есть вложения, нам нужен уникальный идентификатор. Воспользуемся для создания уникального разграничителя вызовом нескольких функций:
$this->boundary = md5(uniqid(time()));
Функция time() возвращает текущее время в формате временной отметки UNIX, которое используется в качестве начального числа функцией uniqid() для создания уникального идентификатора. В свою очередь, внешняя функция md5() генерирует 32-символьный разграничитель, гарантируя отсутствие повторяющихся ID. Функция md5() основана на алгоритме, который принимает строку произвольной длины и создает на ее основе перемешанный ключ. Поскольку возможных значений ключа может быть 2 в степени 128, то генерирование двух одинаковых значений ключа практически исключено. С помощью md5() мы, таким образом, гарантируем, что вероятность создания одинаковых ID практически равна нулю.
Это важно, потому что кто-нибудь может вложить копию сообщения электронной почты в другое сообщение, и если границы MIME окажутся одинаковыми, выделение MIME на приемном конце будет поставлено в тупик:
$this->headers[] = "Content-Type: multipart/mixed; boundary=\"
$this->boundary\"\r\n"; $this->headers[] = $this->mime_msg . "\r\n"; $this->headers[] = "--" . $this->boundary;
}
$this->headers[] = "Content-Type: $this->type ; charset= $this->charset";
Установите $ this-> encoding в 8bit, если требуется поместить многобайтовые символы в текстовую часть тела:
$this->headers[] = "Content-Transfer-Encoding: $this->encoding";
)
buildBodyParts()
Это тот метод, который соединяет вместе части тела. Если в сообщении нет он просто возвращается в вызвавшую функцию.
function buildBodyPartsQ
{
if return true;
Текстовая часть тела идет в массиве первой. Обратите внимание на две пары символов CR/LF, которые отделяют ее от дополнительных частей тела:
$body_parts [0] .= $this->body . "\r\n\r\n"; :
Введем цикл, чтобы добавить в сообщение количество файлов, соответствующее числу элементов в массиве, содержащем части тела:
for ($i=0; $i < count($this->files); $i++) {
if (J ($fp = @fopen($this->filest$i]["file"], "r"))) {
$thiS->ERROR_MSG = $this->ERR_CANNOT_OPEN_FILE . " " . $this->files[$i]["file"];
' return false; }
Прочтем целиком содержимое указанного файла: