ugrás a tartalomhoz

Levelek fejléce UTF8-ban?

carstephun · 2005. Nov. 21. (H), 18.48
Üdv Mindenkinek,

Egy linkajánló oldalt szeretnék készíteni (html kész van, a mail még nem teljesen csak próba szinten), akkor hogyan tudok magyar ékezet varázsolni az Outlookhoz utf-8-as kódolással?

jelenleg van egy kódom:
  1. <?php  
  2. if (isset($_POST['send'])) {  
  3.           
  4.         $cimzett = $_POST["ToName"]."<".$_POST["ToMail"].">";  
  5.         $felado = $_POST["YourName"]."<".$_POST["YourMail"].">";  
  6.         $body = $_POST["message"];  
  7.         $subject = "http://www.xyz.info/".$_GET['site'];  
  8.         $headers = "From: ".$felado."\r\n";  
  9.         $headers .= 'Content-type: text/plain; charset=utf-8'"\r\n";  
  10.         $query = '';  
  11.       if (mail($cimzett$subject$body$headers)) {  
  12.              $success = true;  
  13.              $query = "insert into log values (0, '[gesendet]', now(), 'eml')";  
  14.         } else {  
  15.              $success = false;  
  16.              $query = "insert into log values (0, '[ungesendet]', now(), 'eml')";  
  17.         }  
  18.         @mysql_query($query);  
  19.     }  
maga az oldal az unicode-ban van eltárolva és a charset is uft-8. A jelenség az, hogy a tartalmat az Outlook ($body) azt rendesen jeleníti meg, míg a fejlécben - $cimzett és $feladó változók által meghatározott értékek - már csak krix-kraxokat (űéűáéúĹpúóüöóüö ) jelenít meg az outlook,holott sime ékezetek vannak őáűúóü, ŐÁÚŰÉÓÜ stb.
Szerintetek mi lehet a gond?

Üdv
Sanyi
 
1

fejléc az más tészta

Hojtsy Gábor · 2005. Nov. 21. (H), 19.53
Mint látszik, a content-type a levél tartalmára (Content) vonatkozó információt ad, különben furcsa lenne, hogy a fejlécek text/plain típusúak. Nincs így, azoknak saját formátuma van. Ha megnyitsz egy levél forrást, megnézheted, hogy az ékezeteket a fejlécekben másképp kell kódolni. Példa:

To: =?UTF-8?B?V2VibGFib3IgU3plcmtlc3p0xZFzw6lnaSBMZXZsaXN0YQ==?= <info##kukac##weblabor.hu>

Ezt quoted printable kódolásnak hívják, és az RFC 2047 foglalkozik a kérdéssel.
2

Köszi

carstephun · 2005. Nov. 23. (Sze), 17.37
Köszönöm a tippet, közben sikerült egy kicsit tovább matatni a dolgok között és a következő eredményre jutottam:
  1. <?php  
  2. $query = '';  
  3.         $cimzett = 'To: =?UTF-8?B?'.base64_encode($_POST["ToName"]).'?='.'<'.$_POST["ToMail"].'>'."\r\n";  
  4.         $felado = 'From: =?UTF-8?B?'.base64_encode($_POST['YourName']).'?='.'<'.$_POST["YourMail"].'>'."\r\n";  
  5.         $body = $_POST["message"];  
  6.         $subject = "http://www.activita.info/".$_GET['site'];  
  7. //      $headers = 'To: =?UTF-8?B?'.base64_encode($_POST["ToName"]).'?='.'<1'.$_POST["ToMail"].'>'."\r\n";  
  8.         $headers = 'Content-type: text/plain; charset=utf-8'"\r\n";  
  9.         $headers .= 'From: =?UTF-8?B?'.base64_encode($_POST['YourName']).'?='.'<'.$_POST["YourMail"].'>'."\r\n";  
  10.       if (mail($cimzett$subject$body$headers)) {  
  11.              $success = true;  
  12.              $query = "insert into log values (0, '[gesendet]', now(), 'eml')";  
  13.         } else {  
  14.              $success = false;  
  15.              $query = "insert into log values (0, '[ungesendet]', now(), 'eml')";  
  16.         }  
  17.         @mysql_query($query);  
Üdv
Sanyi