$file_body = fread($fp, filesize($this->files[$i]["file"]));
Закодируем содержимое файла в одну длинную строку $file_body и разделим ее на группы по 76 символов, что, как мы помним, является максимальной допустимой длиной строк закодированных данных:
$file_body = chunk„split(base64_encode($file_body));
PHP предоставляет две функции, с помощью которых можно решить эту задачу:
• base64_encode(string data)
Эта функция принимает строку данных и возвращает те же данные в кодировке.
• chunk_split(string data, int length, string delimiter)
Эта функция разделяет заданную строку на меньшие фрагменты, вставляя строку разделителя через каждые length символов. По умолчанию эти параметры равны 76 и \г\п соответственно, если последние два параметра опущены.
Каждая часть тела обозначается разграничителем, созданным нами ранее:
$tiody_parts[$i+1] = . $this->boundary . "\r\n";
Установим тип файла, соответствующий файлу вложения или равный значению по умолчанию, если он не задан (application/octet-stream):
if (!empty($this->files[$i]["filetype"])):$this->mime_type= $this->files[$i]["filetype"];
$body_parts[$i+l] .= "Content-Type: " . $this->mimej;ype .
";name=" . basename($this->files[$i][ "filename"]) . "\r\n";
Для кодирования нетекстуальных данных в 7-разрядные символы ASCII используется кодировка base64:
$body_parts[$i+l] .= "Content-Transfer-Encoding: base64\r\n\r\n"; $body_parts[$i+1] .= $file_body , "\r\n\r\n";
>
Цикл завершен. Укажем, что части тела закончились, добавив два дефиса в конец разграничителя:
$body_parts[$i+1] ,="--" , $this->boundary .."--";
Все заголовки частей тела и закодированные данные должны быть включены в блок тела сообщения. Развернем массив $body_parts в блок тела:
$this->body = implodeC", $body_parts); return true;
}
viewMsg()
Теперь возвратим дополнительные заголовки MIME с помощью метода view- Msg():
function viewMsgO
{
if (count($this->files) > 0) $this->has_attach = true; if (! $this->checkFields()) return false;
$this->headers = arrayO; $this->buildHeaders();
$this->headers[] = "From: $this->from"; $this-;headers[] = "To: $this->to"; $this->headers[] = "Subject: $this->subject";
$this->buildMimeHeaders(); if return false;
$msg = implode("\r\n", $this->headers);