Некорректная кодировка имен прикрепленных файлов в письме

ptiZa

Новичок
Есть функция отправления писем с вложениями:

PHP:
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
	
	$bound = md5(uniqid(time()));
	
	$header = "Mime-Version: 1.0\r\n";
	$header .= "Content-Type: multipart/mixed; boundary=\"{$bound}\"\r\n";
	$header .= "From: {$from}";
	
	$body  = "--{$bound}\r\n";
	$body .= "Content-Type: text/html; charset=utf-8\r\n";
	$body .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
	$body .= $message;

	foreach($files as $key=>$file) {
		if ($file['src']) {
			$name = $file['name'];
			$fp = fopen($file['src'], "rb");
			$attachment = fread($fp, filesize($file['src']));
			fclose($fp);
			
			$body .= "\r\n--{$bound}\r\n";
			
			$body .= "Content-Type: application/octet-stream; name=\"{$name}; charset=utf-8\"\r\n";
			$body .= "Content-Transfer-Encoding: base64\r\n";
			$body .= "Content-Disposition: attachment; filename=\"{$name}\"\r\n\r\n";
			$body .= chunk_split(base64_encode($attachment));
		}
	}
	
	$body .= "\r\n--{$bound}--\r\n";

	return mail($to, $subject, $body, $header);

Письма приходят в корректной кодировке, но вместо названий прикрепленных файлов отображается абракадабра. Такая проблема наблюдается при отправке писем на mail.ru и ngs.ru
Подскажите, в чем может быть загвоздка?
 

medyson

Новичок
Ответ абсолютно бредовый.
Скажите, ptiZa, решили ли вы свою проблему, и как? У меня такая же ситуация! Хотелось бы увидеть решение
 

ptiZa

Новичок
Ответ абсолютно бредовый.
Скажите, ptiZa, решили ли вы свою проблему, и как? У меня такая же ситуация! Хотелось бы увидеть решение
да, решила, простым способом - скачала новую версию phpmailer'а, и проблема решилась сама собой
 

ptiZa

Новичок
Ответ абсолютно бредовый.
Скажите, ptiZa, решили ли вы свою проблему, и как? У меня такая же ситуация! Хотелось бы увидеть решение
да, решила, простым способом - скачала новую версию phpmailer'а, и проблема решилась сама собой
 

medyson

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

ptiZa

Новичок
мне к сожалению это не помогло. В заголовке по прежнему проблему с кодировкой
так у меня проблемы с кодировкой были не в заголовке, а в названии прикрепленных файлов к письму
а проблемы с кодировкой заголовка решаются перекодированием заголовка в нужную кодировку из cp1251 в utf-8 или наоборот
 

medyson

Новичок
не помогло. может я упускаю что-то. раньше проблем с подобным не возникало.
вот собственно код.
может кто сталкивался..
PHP:
    public function sendLetter() {


        $message = null;
        $send = new Letter();

        if (isset($_POST['send'])) {

            $post = new POSTv2($send);
            $send = $post->getObject();

            $send->addRule(new ValidationRule('eMail', 'frommailletter', 'Вы не указали свой e-mail, либо указали не правильно!'));
            $send->addRule(new ValidationRule('eMailArray', 'mailletter', 'Вы не указали e-mail получателя, либо указали не правильно!'));
            $send->addRule(new ValidationRule('required', 'titleletter', 'Вы не оставили тему письма!'));
            $send->addRule(new ValidationRule('required', 'messageletter', 'Письмо пустое!'));

            if ($send->isValid()) {
                $model = new SettingsAdminModel();
                $settings = $model->getAllSettings();
                $mail = new PHPMailer();
                $mail->Encoding = '8bit';
                $mail->ContentType = 'text/plain';
                $mail->CharSet = 'utf-8';
                $mail->From = $send->getFrommailletter();
                $mail->IsHTML(true);
                $mail->Subject = '=?utf-8?B?' . base64_encode($send->getTitleletter()) . '?=';
                include_once c::getPTM() . '/sendletter/view/LookletterForm.php';
                $show = new LookletterForm(null, null, null, $send->getMessageletter());
                $mail->Body = ($show->getContent());
                $mail->AddAddress($send->getMailletter());

                $mail->Send();

                $this->backLetterForm();
                echo 'Ваше сообщение успешно отправлено';
            } else {
                $errorMessageList = $send->getErrorMessageList();
                if ($errorMessageList) {

                    foreach ($errorMessageList as $errorMessage) {
                        echo $errorMessage . '<br/>';
                    }
                }
            }
        }
}
 

Sufir

Я не волшебник, я только учусь
У меня тоже на mail.ru криво отображаются письма из mail(), но том же gmail иди яндексе нормально. Х.з. что такое нужно указать, что б mail.ru нормально понял...
 
Сверху