Проблем в charset при изпращане на Email

montana

Registered
Имам този код, като изпратя съобщение към абв.бг всичко което е на кирилиза излиза на маймуница

РџРѕ-долу Рµ линка Р·Р° активиране РЅР° РІР°С?РёСЏ акаунт.


Код:
$to = $email;
   $subject = "Активиране на профил в ".$ustawienia['tytul'];
   $message = "
   Здравей $konto!\n\n 
   По-долу е линка за активиране на вашия акаунт.\n\n 
   http://".$_SERVER['SERVER_NAME']."/activate.php?code=".$code."\n\n
   Това съобщение е генерирано автоматично. Моля, не отговаряйте!\n\n
   \nПоздрави от екипа на ".$ustawienia['tytul']
   ;
	$headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
   $headers = "FROM: Успешна регистрация <no-reply@".$_SERVER['SERVER_NAME'].">";
   mysql_query($zapytanie) or die("Wystąpił błąd #query" );
   echo('Здравей <strong><i>'.$konto.'</i></strong>. Успешно се регистрира!<br/>');
   if($ustawienia['req_code']) {
		mail($to, $subject, $message, $headers) or die("Възникна грешка #mail" );

Пробвах с utf-8 и windows-1251, но е същото..
 
Ммммдамм кода ти е объркан.. получава се така защото презаписваш хедърите - все едно нямаш хедър, който оказва енкодинга на информация,която пращаш.Също използването на utf-8 кодировка е силно препоръчително да не кажа задължително...
кода с грешната логика :
PHP:
$headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n"; 
$headers = "FROM: Успешна регистрация <no-reply@".$_SERVER['SERVER_NAME'].">";
правилната логика :
PHP:
$headers = 'Content-type: text/html; charset=charset=UTF-8' . "\r\n"; 
$headers .= "FROM: Успешна регистрация <no-reply@".$_SERVER['SERVER_NAME'].">";

PHP:
$a.='a';
$a='b';
echo $a; // b
$a='a';
$a.='b';
echo $a; // ab
 
Аз реших проблема по този начин:

$headers = "From: noreply@site.com\n";
$headers .= "Reply-To: noreply@site.com\n";
$headers .= "Return-Path: noreply@site.com\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: multipart/alternative; charset=UTF-8; boundary=\"_a_b_c_d_e_\"\n";

$headers .= "X-Sender: Site.com mail service\n";
$headers .= "X-Mailer: PHP\n";
$headers .= "X-Priority: 3\n";
$headers .= "X-MSmail-Priority: Normal\n";

$content = "Тук слагаш текста. Можеш да използваш HTML & CSS";

//Ако използваш CP1251 може да се наложи да сложиш това:
//$content = iconv("CP1251", "UTF-8", $content);

$message = "
--_a_b_c_d_e_
Content-Type: text/html;
charset=UTF-8
Content-Disposition: inline
Content-Transfer-Encoding: base64

" . base64_encode($content) . "

--_a_b_c_d_e_--";

$title = "Тема на съобщението";

mail(mail_to@mail.site, "=?UTF-8?b?" . base64_encode($title) . "?=", $message, $headers);
 
@somebody не става по твоя начин, излиза пак на маймуница.

@madmax3_ можеш ли да ми го вградиш в кода това, че при мен не се получава.
 
Нямам време. Дал съм ти готов работещ код, само си сложи твойте неща в $content и $title.
 
montana каза:
@somebody не става по твоя начин, излиза пак на маймуница.
Ами когато съм преправял твоя код съм допуснал синтактична грешка която би довела до същия резултат 'charset=charset=UTF-8'... би трябвало да е така :
PHP:
$headers = 'Content-type: text/html; charset=UTF-8' . "\r\n";
пп. Тествах и нямах никакви проблеми с абв.Документа, в който вмъкваш кода би трябвало да е с UTF-8 кодировка (без BOM).. с тези windows-1251 и ANSI е някак си несериозно отношение към създаването на уеб страница. :wink:
 

Горе