Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP

Войти
Регистрация
Восстановить пароль
 
гинеколог
1 / 1 / 0
Регистрация: 14.03.2012
Сообщений: 78
#1

Проблемы в кодировках при отправке письма с вложениями - PHP

17.08.2013, 07:38. Просмотров 969. Ответов 1
Метки нет (Все метки)

Добрый день!
При отправке письма с вложением вместо нормальных русских букв в тексте приходит типа такого п╟пЁп╟ если кодировка utf-8? причем так в майле, на яндекс почту все нормально отображается, при смене кодировок текст сообщения отображается нормально, но вместо темы сообщения появляются черные ромбики со знаками вопроса.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function send_mail($value, $thema, $msg, $path) { 
 // Вспомогательная функция для отправки почтового сообщения с вложением
 // Параметры - адрес получателя, тема письма, текст письма, путь к загруженному файлу
 if ($path) {  
  $fp = fopen($path,"rb");   
  if (!$fp) { print "Cannot open file"; exit(); }   
  $file = fread($fp, filesize($path));   
  fclose($fp);   
 }  
 $name = basename($path); // в этой переменной надо сформировать имя файла (без пути)  
 $EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
 $boundary     = "--".md5(uniqid(time()));  // любая строка, которой не будет ниже в потоке данных.  
 $headers    = "MIME-Version: 1.0;$EOL";   
 $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
 $headers   .= "From: admin@mail.com";  
 $multipart  = "--$boundary$EOL";
 $multipart .= "------------".$bondary."\nContent-Type:text/html;\n";
 $multipart .= "Content-Transfer-Encoding: 8bit\n\n$msg\n\n";
 $multipart .= $EOL; // раздел между заголовками и телом html-части 
 $multipart .=  "$EOL--$boundary$EOL";   
 $multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";   
 $multipart .= "Content-Transfer-Encoding: base64$EOL";   
 $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";   
 $multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла 
 $multipart .= chunk_split(base64_encode($file));   
 $multipart .= "$EOL--$boundary--$EOL";   
 if (!mail($value, $thema, $multipart, $headers)) { //если не письмо не отправлено
  return false;           
 }  
 else { // если письмо отправлено
  return true;
  
 }  
 
}
 
 
send_mail('erik@mail.ru', "тема" , "текст сообщения", 'attention_sign.gif');
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2013, 07:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проблемы в кодировках при отправке письма с вложениями (PHP):

Косяки при отправке письма на почту - PHP
Всем привет. Возникла следующая проблема. Отправляю на почту письмо функцией mail. Вся информация в кодировке utf-8. При...

Кавычками при отправке HТМL письма [PHP] - PHP
Если написать, например, <a hreff="www.yandex.ru">ссылка<a/> то получается вот это: <a hreff=\"www.yandex.ru\">ссылка<a/> Как...

Ошибка при отправке - PHP
Доброго времени суток. Столкнулся с проблемой при отправки заявки с сайта. После заполнения данных, после отправки, письмо приходит на...

Кодировка при отправке данных формы - PHP
Помогите, пожалуйста, решить проблему. При отправке данных формы на e-mail посредством php, вместо текста на кириллице приходят знаки...

Звук для всех при отправке формы - PHP
Привет всем. Помогите пожалуйста, как сделать что когда нажимаешь на кнопку "Отправить" проигрывался звук для всех посетителей. Например,...

Формирование номера заказа при отправке форм - PHP
Здравствуйте. У меня есть несколько форм на странице, на каждую из них скрипт написан. В письме каждой формы указывается номер заказа....

1
PlumBoom
:)
134 / 134 / 16
Регистрация: 30.03.2013
Сообщений: 428
19.08.2013, 00:57 #2
В том скрипте, где используется эта функция в самом вверху пропишите
PHP
1
header('Content-type: text/html; charset=utf-8');
а также не забудьте установить meta-тег, указывающий кодировку, в html-странице (при условии, если данные приходят с формы); или проверьте кодировку файла, если текст в самом скрипте.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2013, 00:57
Привет! Вот еще темы с ответами:

Теряются вложения при массовой отправке писем - PHP
Всем привет. Для отправки писем использую PhpMailer (точнее, расширение для Yii, которое его использует). Раз в 5 минут работает крон...

не записываются данные при отправке запроса почему - PHP
1.php <!DOCTYPE html> <html lang="ru"> <head> <title>Заголовок</title> </head> <body> <form name="myform"...

Изменение сообщения при отправке формы обратной связи - PHP
Есть страница <?PHP if (!empty($_POST)){ $myemail = "salnikovandrey@list.ru"; $name = $_POST; $phone =...

Как убрать приписку от хостера при отправке mail()? - PHP
Когда отправляю сообщение через mail() то приходит от кого вот так: "Новый клиент@host.ru"


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru