function mailenc($mail) { list($head, $body) = preg_split("/\r?\n\r?\n/s", $mail, 2); $encoding = ''; $re = '/^Content-type:\\s*\\S+\\s*;\\s*charset\\s*=\\s*(\\S+)/mi'; if (preg_match($re, $head, $p)) { $encoding = $p[1]; } $newhead = ""; foreach (preg_split('/\\r?\\n/s', $head) as $line) { $line = mailenc_header($line, $encoding); $newhead .= "{$line}\r\n"; } return "{$newhead}\r\n{$body}"; }
function mailenc($mail) { // Разделяем тело сообщения и заголовки. list($head, $body) = preg_split("/\r?\n\r?\n/s", $mail, 2); // Определяем кодировку письма по заголовку Content-type. $encoding = ''; $re = '/^Content-type:\\s*\\S+\\s*;\\s*charset\\s*=\\s*(\\S+)/mi'; if (preg_match($re, $head, $p)) { $encoding = $p[1]; } // Проходимся по всем строкам-заголовкам. $newhead = ""; foreach (preg_split('/\\r?\\n/s', $head) as $line) { // Кодируем очередной заголовок. $line = mailenc_header($line, $encoding); $newhead .= "{$line}\r\n"; } // Формируем окончательный результат. return "{$newhead}\r\n{$body}"; }