Обработка писем в зависимости от кодировки?

Статус
В этой теме нельзя размещать новые ответы.

new_forward

Профессор
Регистрация
5 Май 2008
Сообщения
673
Реакции
44
Доброго времени суток!

Подскажите пожалуйста как точно определить кодировку письма а то приходят разные письма...и получается одни определяются а другие нет и еще вопрос некоторые письма приходят закодированные в base64_encode...как определить что оно закодировано?

Короче говоря нет ли куска кода который бы все приводил к единой кодировке что б потом можно спокойно вставить в базу?
 
Когда то писал скрипт, тоже была необходимость определения какое кодирования письма используется. Помню находил пару классов для обработки приходящих писем, и из них уже выдергивал необходимые куски. Если найду дома эти классы выложу (хотя думаю на врятли найду, много времени с тех пор утекло).

Порой интернет на момент таких классов пока там, до дому доберусь уже видно будет.
 
Автор, есть замечательная библиотека PHPMailer. Насколько я помню, у него есть функционал работы с кодировками.
 
Отрыл один старый скрипт. В общем так, во вложении прикреплен класс php, его качнешь и прицепишь к скрипту далее код использования (если я тебя правильно понял:(

PHP:
$set_mail_body_type = 'text'; //html или text
$set_charset_out = 'utf-8';

$mail_in = 'ТУТ_ПИСЬМО_С_ГОЛОВОЙ_ПИСЬМА_И_ТЕЛОМ';

##################################################

$Parser = new MimeMailParser();
$Parser->setText($mail_in);

$mail_out = $Parser->getMessageBody($set_mail_body_type);

preg_match('#Content-Type:.+charset=(.+)#', $mail_in, $Charset);
unset($Charset[0]); 

preg_match('#Content-Transfer-Encoding: (.+)#', $mail_in, $Encoding); 
unset($Encoding[0]); 

if ($Encoding[1]== 'quoted-printable') {
	$mail_out = quoted_printable_decode($mail_out);
}
elseif (preg_match('#=..=#', $mail_out)) {
	$mail_out = quoted_printable_decode($mail_out);
}
elseif ($Encoding[1] == 'base64') {
	$mail_out = base64_decode($mail_out);
}

if ($Charset != '') {
	$mail_out = iconv($Charset[1], $set_charset_out.'//IGNORE', $mail_out);
}

Вот как то так, код не проверял, нет возможности, может быть где то что то не учтено но это дело житейское можно дописать и до думать...
 

Вложения

  • MimeMailParser.class.php.zip
    2,7 KB · Просмотры: 8
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху