Аргерих Л. О языке РНР. Часть 2. Страница 127


$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);




Найти условия ипотека выгодно быстро вы можете только через сайт sravni.ru. Удобный сервис предоставит максимум информации по ипотеке и вы подберете идеальные условия кредитования.