Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/23: Рейтинг темы: голосов - 23, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 13.07.2013
Сообщений: 19
1

Кодировка письма. Приходят квадратики

13.07.2013, 10:44. Показов 4447. Ответов 8
Метки нет (Все метки)

Приветствую! Такая проблема:
Кодировка файла UTF-8
Из него отправляется e-mail,
в headers указано 'Content-Type: text/html; charset=utf-8\r\n'
В теле письма указано
HTML5
1
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Данные берутся из базы, перед запросами обозначено:
PHP
1
mysql_query("SET NAMES utf8");
На почту приходят квадратики
p.s. Это оригинал скрипта SkyMag, файл d.php, отправка уведомления о заказе (http://skyscript.ru).

Помогите пожалуйста решить проблемку, заранее спасибо за уделенное время!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2013, 10:44
Ответы с готовыми решениями:

Отправка письма php. Письма со скрипта на локальном сервере (Denwer) не приходят на почту.
Доброго Времени Суток!!! Я запускаю Денвером php скрипт со следующим кодом &lt;?php $name=$_GET;...

Не приходят письма на Outlook
Ребята, помогите! Пытаюсь использовать обычную функцию mail() для отправки писем. Все хорошо, без...

Не приходят письма на mail.ru
Не приходят письма на маил, меняю на яндекс почту все приходит как надо, в чем может быть проблема?...

Приходят письма с кракозябрами
Есть контактная форма и с нее письма приходят в таком виде: Сам сайт имеет кодировку...

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на PHP‌
8
1 / 1 / 0
Регистрация: 03.07.2013
Сообщений: 40
13.07.2013, 10:56 2
открой через блокнот свой php файл, выбери "сохранить как" затем посмотри в правом нижнем углу кодировку, наверняка там не UTF
0
0 / 0 / 0
Регистрация: 13.07.2013
Сообщений: 19
13.07.2013, 13:43  [ТС] 3
Цитата Сообщение от p0is0n Посмотреть сообщение
открой через блокнот свой php файл, выбери "сохранить как" затем посмотри в правом нижнем углу кодировку, наверняка там не UTF
Я все делаю через PHP Expert Editor, и там для этого файла стоит UTF

Добавлено через 2 часа 12 минут
Помогите плиз! Ниже приведу весь код:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
//оформить заказ
if ($a=='ofzak') 
{   
$user_reg = globper('user_reg');
$user_login = globper('user_login');
$user_tel = globper('user_tel');
$user_fax = globper('user_fax');
$user_email = globper('user_email');
$user_gorod = globper('user_gorod');
$user_obl = globper('user_obl');
$zak_prim = globper('zak_prim');
if(empty($user_reg) && empty($user_login)) { $error[user_email] = 'Введите своё фамилие имя отчество'; exit(json_encode($error)); }
if(empty($user_tel) && empty($user_email) && empty($user_reg)) { $error[user_email] = 'Введите телефон или e-mail для связи с Вами'; exit(json_encode($error)); }
if (empty($user_reg)){
    mysql_query("SET NAMES utf8");
    $skybaseuser = mysql_query("SELECT `user_id` FROM `skyusers` WHERE `user_email`='{$user_email}' LIMIT 1",$db) or die(mysql_error());
    if (mysql_num_rows($skybaseuser) > 0)
        {   
        $skyrowuser = mysql_fetch_array($skybaseuser);
            $skybase = mysql_query("UPDATE `skyusers` SET `user_tel`='{$user_tel}',`user_fax`='{$user_fax}',`user_gorod`='{$user_gorod}',`user_obl`='{$user_obl}' WHERE `user_email`='{$user_email}'",$db) or die(mysql_error());
        $user_id = $skyrowuser['user_id'];
        }
    else{
        $user_ip = $_SERVER['REMOTE_ADDR'];
        $skydob = mysql_query ("INSERT INTO `skyusers` (`user_email`,`user_login`,`user_tel`,`user_fax`,`user_gorod`,`user_obl`,`user_vizit`,`user_prava`,`user_ip`) 
    VALUES ('{$user_email}','{$user_login}','{$user_tel}','{$user_fax}','{$user_gorod}','{$user_obl}','{$vrem}','0','{$user_ip}')",$db) or die(mysql_error());
        $skybaseuser = mysql_query("SELECT `user_id` FROM `skyusers` WHERE `user_email`='{$user_email}' LIMIT 1",$db) or die(mysql_error());
        $skyrowuser = mysql_fetch_array($skybaseuser);
        $user_id = $skyrowuser['user_id'];
        }
    $msg='<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head><body>
    В интернет магазин  — 
    <a title="перейти" href="http://'.$_SERVER['SERVER_NAME'].'">'.$_SERVER['SERVER_NAME'].'</a> <br />
    поступил новый заказ от пользователя: <strong>'.$user_login.'</strong> (не зарегистрирован)<br />
    <i>Данные пользователя:<br />
    <strong>E-mail:</strong> '.$user_email.'<br />
    <strong>Телефон:</strong> '.$user_tel.'<br />
    <strong>Факс:</strong> '.$user_fax.'<br />
    <strong>Город:</strong> '.$user_gorod.'<br />
    <strong>Адрес:</strong> '.$user_obl.'<br />
    </i>';
    }
else {
    mysql_query("SET NAMES utf8");
    $skybase = mysql_query("UPDATE `skyusers` 
                SET `user_tel`='{$user_tel}',`user_fax`='{$user_fax}',`user_gorod`='{$user_gorod}',`user_obl`='{$user_obl}'  
                WHERE `user_id`='{$_SESSION['ses_user']}'",$db) or die(mysql_error());
    $skybaseuser = mysql_query("SELECT * FROM `skyusers` WHERE `user_id`='{$_SESSION['ses_user']}' LIMIT 1",$db) 
    or die(mysql_error());  
    $skyrowuser = mysql_fetch_array($skybaseuser);  
    $msgadm='<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
                </head><body>
                В интернет магазин  — 
                <a title="перейти" href="http://'.$_SERVER['SERVER_NAME'].'">'.$_SERVER['SERVER_NAME'].'</a> <br />
                поступил новый заказ от пользователя: <strong>'.$skyrowuser['user_login'].'</strong><br />
                <i>Данные пользователя:<br />';
    $msguser='<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
                </head><body>
                Вами совершен заказ в интернет магазине  — 
                <a title="перейти" href="http://'.$_SERVER['SERVER_NAME'].'">'.$_SERVER['SERVER_NAME'].'</a> <br />
                
                <i>Ваши контактные данные:<br />';          
                
                
    $msg='<strong>E-mail:</strong> '.$skyrowuser['user_email'].'<br />
                <strong>Телефон:</strong> '.$skyrowuser['user_tel'].'<br />
                <strong>Факс:</strong> '.$skyrowuser['user_fax'].'<br />
                <strong>Город:</strong> '.$skyrowuser['user_gorod'].'<br />
                <strong>Адрес:</strong> '.$skyrowuser['user_obl'].'<br />
                <strong>Дополнительно:</strong> '.$skyrowuser['user_osebe'].'</i>';
        $user_id=$_SESSION['ses_user'];     
    }
    $headers=null;
    $headers.='Content-Type: text/html; charset=utf-8\r\n';
    $headers.='From: SkyScript.ru@SkyMail.v2\r\n';
    $headers.='X-Mailer: SkyMail\r\n';
    $massivKorz = explode(",", $_COOKIE["korzina"]);
    $msg.='<br /><br /><i>Заказ:</i><br /><table border="0" cellpadding="5" cellspacing="0">
    <tr>
    <td bgcolor="#ffffff" width="25" class="sm2" align="center">№</td>
    <td bgcolor="#ffffff" class="sm2" align="center">название</td>
    <td bgcolor="#ffffff" class="sm2" width="70" align="center">количество</td>
    <td bgcolor="#ffffff" class="sm2" align="center">цена</td>
    </tr>';
    for ( $i=0; $i<count($massivKorz)-1; $i++) 
    {
    $korz = explode(":", $massivKorz[$i]);
    $skybasetov = mysql_query("SELECT * FROM `skycat_tov` WHERE `tov_id`='{$korz[0]}' LIMIT 1",$db) 
    or die(mysql_error());
    $skyrowtov = mysql_fetch_array($skybasetov);
    $tov_nazv = $skyrowtov['tov_nazv'];
    if (strlen($tov_nazv) > 80) { $tov_nazv = substr("$tov_nazv", 0, 80); $tov_nazv = $tov_nazv."..."; }
    $msg.='<tr><td align="center">'.($i+1).'</td>
    <td><a href="http://'.$_SERVER['SERVER_NAME'].'/skycat.php?mod=cat&cat_id='.$skyrowtov['tov_cat'].'&tov_id='.$skyrowtov['tov_id'].'">'.$tov_nazv.'</a></td>
    <td align="center">'.$korz[1].'</td>
    <td align="center">'.$korz[2].'</td>
    </tr>';
    $vsego+=$korz[2]*$korz[1];
    }
    $vsego = number_format($vsego, 2, '.', '');
    $msg.='<tr><td bgcolor="#ffffff" colspan="3" align="right" height="40"><strong>Всего:</strong></td>
    <td bgcolor="#ffffff" align="center"><span id="totalPriceKorz">'.$vsego.'</span></td></tr>
    </table>';
    $msg.='<em>Примечание к заказу: <br />'.$zak_prim.'</em><br /><br /><br />
    <span class="sm">Это письмо было сгенерировано автоматически, отвечать на него не надо</span>
    <br /><br /><hr /><center>
    <a class="sm" target=_blank href=http://www.skyscript.ru>Скрипт разработан SkyScript</a>
    </center></body></html>';
    mail($adm_email, 'Заказ с сайта — '.$_SERVER['SERVER_NAME'], $msgadm.$msg, $headers);
    mail($user_email, 'Ваш заказ на сайте — '.$_SERVER['SERVER_NAME'], $msguser.$msg, $headers);
    $zakazano = $_COOKIE["korzina"];
    $skydob = mysql_query ("INSERT INTO `skymag_zak` (`zak_ot`,`zak_tov`,`zak_data`,`zak_prim`) 
    VALUES ('{$user_id}','{$zakazano}','{$vrem}','{$zak_prim}')",$db) or die(mysql_error());
    setcookie('korzina', '', 0, "/");
} //завершение оформить заказ
0
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 7
16.07.2013, 18:00 4
Цитата Сообщение от allasan-1 Посмотреть сообщение
Кодировка письма. Приходят квадратики
приходят квадратики в теле письма или в теме?
0
0 / 0 / 0
Регистрация: 13.07.2013
Сообщений: 19
17.07.2013, 16:53  [ТС] 5
Цитата Сообщение от BestDrug Посмотреть сообщение
приходят квадратики в теле письма или в теме?
В теле. в теме все ок

Добавлено через 21 час 42 минуты
Помогите пожалуйста!
0
23 / 23 / 1
Регистрация: 31.05.2013
Сообщений: 108
17.07.2013, 18:30 6
Цитата Сообщение от allasan-1 Посмотреть сообщение
В теле. в теме все ок

Добавлено через 21 час 42 минуты
Помогите пожалуйста!
У тебя название столбцов нормально отображаются? Если да - это траблы с кодировкой в бд, если нет - посмотри какая кодировка страницы(или кодировка в какой отображает браузер) в которой ты просматриваешь входящее письмо. Есть вариант, что кодировка у почтовика отличается от кодировки в письме.
0
0 / 0 / 0
Регистрация: 13.07.2013
Сообщений: 19
17.07.2013, 19:47  [ТС] 7
Цитата Сообщение от m1ndgr3p Посмотреть сообщение
если нет - посмотри какая кодировка страницы(или кодировка в какой отображает браузер) в которой ты просматриваешь входящее письмо. Есть вариант, что кодировка у почтовика отличается от кодировки в письме.
Именно так. В браузере - автоматическо определение. для почтовика определяет win 1251, естественно письмо в utf 8 не отображается нормально. Как можно сделать, чтобы письмо приходило в cp1251, если кодировка самого файла, который отправляет письмо - utf?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16827 / 6705 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.07.2013, 20:39 8
Цитата Сообщение от allasan-1 Посмотреть сообщение
PHP
1
2
mail($adm_email, 'Заказ с сайта — '.$_SERVER['SERVER_NAME'], $msgadm.$msg, $headers);
mail($user_email, 'Ваш заказ на сайте — '.$_SERVER['SERVER_NAME'], $msguser.$msg, $headers);
а если так?
PHP
1
2
mail($adm_email, '=?UTF-8?B?'.base64_encode('Заказ с сайта — '.$_SERVER['SERVER_NAME']).'?=', $msgadm.$msg, $headers);
mail($user_email, '=?UTF-8?B?'.base64_encode('Ваш заказ на сайте — '.$_SERVER['SERVER_NAME']).'?=', $msguser.$msg, $headers);
Добавлено через 2 минуты
Цитата Сообщение от allasan-1 Посмотреть сообщение
PHP
1
2
3
$headers.='Content-Type: text/html; charset=utf-8\r\n';
$headers.='From: SkyScript.ru@SkyMail.v2\r\n';
$headers.='X-Mailer: SkyMail\r\n';
либо так
PHP
1
2
3
$headers.="Content-Type: text/html; charset=utf-8\r\n";
$headers.="From: SkyScript.ru@SkyMail.v2\r\n";
$headers.="X-Mailer: SkyMail\r\n";
либо так
PHP
1
2
3
$headers.='Content-Type: text/html; charset=utf-8' . "\r\n";
$headers.='From: SkyScript.ru@SkyMail.v2' . "\r\n";
$headers.='X-Mailer: SkyMail' . "\r\n";
и неплохо было бы добавить еще и MIME-Version
1
0 / 0 / 0
Регистрация: 13.07.2013
Сообщений: 19
18.07.2013, 09:18  [ТС] 9
Цитата Сообщение от KOPOJI Посмотреть сообщение
а если так?
PHP
1
2
mail($adm_email, '=?UTF-8?B?'.base64_encode('Заказ с сайта — '.$_SERVER['SERVER_NAME']).'?=', $msgadm.$msg, $headers);
mail($user_email, '=?UTF-8?B?'.base64_encode('Ваш заказ на сайте — '.$_SERVER['SERVER_NAME']).'?=', $msguser.$msg, $headers);
Добавлено через 2 минуты

либо так
PHP
1
2
3
$headers.='Content-Type: text/html; charset=utf-8' . "\r\n";
$headers.='From: SkyScript.ru@SkyMail.v2' . "\r\n";
$headers.='X-Mailer: SkyMail' . "\r\n";
и неплохо было бы добавить еще и MIME-Version
СПАСИБО!!!! Вот это поменял и все заработало!!! ) О великий супер-модератор )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2013, 09:18

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Не приходят письма на mail.ru
Не понимаю в чем дело. На яндекс письма приходят, а вот на мail нет. Что за конфиг необходимо...

Не приходят письма на mail.ru
Здравствуйте! вот такая проблема на сайте есть форма обратной связи и php который должен отправлять...

Письма не приходят на почту
Здравствуйте, письма с информации с формы отправки не приходят на почту, вне зависимости какая...

Отправка Email. Письма не приходят.
Как правельно отправлять почту на PHP? пробую: if ($stmt-&gt;execute()) { while...


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

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

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