Answer the question
In order to leave comments, you need to log in
How to solve the problem with the encoding of the letter?
in general, outlook and Yandex mail comes normally, but question marks come to mail ru
function sendMailAttachment($mailTo, $subject, $message, $file = false){
$separator = "---"; // разделитель в письме
$subject = '=?utf-8?B?'.base64_encode($subject).'?=';
// Заголовки для письма
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$separator\""; // в заголовке указываем разделитель
// если письмо с вложением
if($file){
$bodyMail = "--$separator\n"; // начало тела письма, выводим разделитель
$bodyMail .= "Content-type: text/html; charset=\"utf - 8\"\r\n"; // кодировка письма
$bodyMail .= "Content-Transfer-Encoding: 8bit"; // задаем конвертацию письма
$bodyMail .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode(basename($file))."?=\n\n"; // задаем название файла
$bodyMail .= $message."\n"; // добавляем текст письма
$bodyMail .= "--$separator\n";
$fileRead = fopen($file, "r"); // открываем файл
$contentFile = fread($fileRead, filesize($file)); // считываем его до конца
fclose($fileRead); // закрываем файл
$bodyMail .= "Content-Type: application/octet-stream; name==?utf-8?B?".base64_encode(basename($file))."?=\n";
$bodyMail .= "Content-Transfer-Encoding: base64\n"; // кодировка файла
$bodyMail .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode(basename($file))."?=\n\n";
$bodyMail .= chunk_split(base64_encode($contentFile))."\n"; // кодируем и прикрепляем файл
$bodyMail .= "--".$separator ."--\n";
// письмо без вложения
}else{
$bodyMail = $message;
}
$result = mail($mailTo, $subject, $bodyMail, $headers); // отправка письма
return $result;
}
Answer the question
In order to leave comments, you need to log in
I don’t remember on which site I found it, but if you paste the text like this, then encoding problems are solved.$text = '=?utf-8?b?' . $text . '?=';
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question