Проблем с PHP webmail на кирилица?
Имам една уеб форма и PHP скрипт, който изпраща информацията от формата на даден мейл адрес. Проблемът е, че получателя има достъп до пощата си само през MS Outlook и вижда грешни символи (ако се пренасочи към поща в абв.бг всичко се вижда нормално) Може би ако има начин да задам изключително кодирането да бъде windows-1251 нещата ще се оправят :undecided:
Ето скрипта, за да видите ако нещо съм омазал там:
Код:
<?php
if ($_SERVER['REQUEST_METHOD']=="POST"){
if (strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])>7 ||
!strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']))
die("Bad referer");
$msg="Answers:\n";
foreach($_POST as $key => $val){
if (is_array($val)){
$msg.="Item: $key\n";
foreach($val as $v){
$v = stripslashes($v);
$msg.=" $v\n";
}
} else {
$val = stripslashes($val);
$msg.="$key: $val\n";
}
}
$recipient="*****@***.bg";
$subject="Questionnaire results";
error_reporting(0);
if (mail($recipient, $subject, $msg, $headers)){
echo "<h1>Thank you</h1><p>Message successfully sent:</p>\n";
echo nl2br($input);
} else
echo "An error occurred and the message could not be sent.";
} else
echo "Bad request method";
?>
Благодарности,
Ско :)
Re: Проблем с PHP webmail на кирилица?
Ами може да стане по следния начин ... тъй като не видях къде на друго място си писал $headers, можеш да го направиш по следния начин ...
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
и от там нататък е ясно ;)
и аз имах такъв проблем ... много е достадно наистина. Ако не свърши работа, кажи ще ти пратя направо формата написана на мейла.
Re: Проблем с PHP webmail на кирилица?
Не се получи и така за съжаление. Струва ми се, че Outlook не може да декодира html, защото хедърите, които му пратихме се появяват в началото на писмото. Ето как изглежда мейла с кода на Creator:
Код:
Content-type: text/html; charset=windows-1251 X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on dragon.webnick.net
X-Spam-Level: *
X-Spam-Status: No, score=1.7 required=5.0 tests=HTML_10_20,HTML_MESSAGE,
HTML_MIME_NO_HTML_TAG,MIME_HTML_ONLY,MISSING_DATE,NO_REAL_NAME
autolearn=no version=3.0.4
Values submitted by the user:
хЛЕ: ХЛБЙЕЛПКЙБ<br>йНЛОЮМХЪ: ЙНЛОЮМХЪ<br>юДПЕЯ: ЯДИТЯКЙДТ 123123<br>цПЮД: ЯНТХЪ<br>рЕКЕТНМ: 123321<br>лНАХКЕМ: 123123<br>тЮЙЯ: 321321<br>еК_ОНЫЮ: mail@mail.bg<br>йЗДЕ_ЫЕ_АЗДЕ_ПЮГОНКНФЕМ_БЮЬХЪ_ЯЮКНМ: яНТХЪ<br>лЕЯЕЖ_МЮ_НРБЮПЪМЕ: чКХ<br>цНДХМЮ_МЮ_НРБЮПЪМЕ: 2006<br>
... и без хедърите:
Код:
Values submitted by the user:
хЛЕ: ХЛЕ ХЛЕ
йНЛОЮМХЪ: ЙНЛОЮМХИЙЮ
юДПЕЯ: ЮЯТЯДТ 2 342
цПЮД: ЯНТХЪ
рЕКЕТНМ: 123123
лНАХКЕМ: 0872134234
тЮЙЯ: 02234234
еК_ОНЫЮ: email@kjkjk.com
йЗДЕ_ЫЕ_АЗДЕ_ПЮГОНКНФЕМ_БЮЬХЪ_ЯЮКНМ: ЯНТХЪ
лЕЯЕЖ_МЮ_НРБЮПЪМЕ: юОПХК
цНДХМЮ_МЮ_НРБЮПЪМЕ: 2008
Прави ми впечатление, че таговете <br> се визуализират, вместо да се изпълняват. Да не би някаква настройка на Outlook да не е нацъкана??
Re: Проблем с PHP webmail на кирилица?
Не знам дали ще помогне. Това го намерих в хелпа на Outlook 2003
---------
Turn off automatic message encoding* *
If you are using Microsoft Internet Explorer 5.5 or later, Microsoft Outlook automatically evaluates the text in a message and selects the encoding (character sets) used to display all characters in the message.
1. On the Tools menu, click Options.
2. Click the Mail Format tab, and then click International Options.
3. Under Encoding Options, clear the Auto-Select encoding for outgoing messages check box.
Note* To turn on automatic message encoding, select the Auto-Select encoding for outgoing messages check box.
----------
и евентуално да се види какви са текущите настройки за encoding на IE - IE/View/Encoding (въпреки, че самия IE може и да не се ползва на този компютър)
Re: Проблем с PHP webmail на кирилица?
Проработи най-сетне... явно тайната наистина е била в хедърите. Ето необходимите редове, в случай че на някой му потрябват:
Код:
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html;charset=windows-1251\n";
Благодарности отново за помощта и на двама ви :)