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:
<?php
if (isset($_POST['send'])) {
		
		$cimzett = $_POST["ToName"]."<".$_POST["ToMail"].">";
		$felado = $_POST["YourName"]."<".$_POST["YourMail"].">";
		$body = $_POST["message"];
		$subject = "http://www.xyz.info/".$_GET['site'];
		$headers = "From: ".$felado."\r\n";
		$headers .= 'Content-type: text/plain; charset=utf-8'. "\r\n";
		$query = '';
	  if (mail($cimzett, $subject, $body, $headers)) {
			 $success = true;
			 $query = "insert into log values (0, '[gesendet]', now(), 'eml')";
		} else {
			 $success = false;
			 $query = "insert into log values (0, '[ungesendet]', now(), 'eml')";
		}
		@mysql_query($query);
	}
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:

<?php
$query = '';
		$cimzett = 'To: =?UTF-8?B?'.base64_encode($_POST["ToName"]).'?='.'<'.$_POST["ToMail"].'>'."\r\n";
		$felado = 'From: =?UTF-8?B?'.base64_encode($_POST['YourName']).'?='.'<'.$_POST["YourMail"].'>'."\r\n";
		$body = $_POST["message"];
		$subject = "http://www.activita.info/".$_GET['site'];
//		$headers = 'To: =?UTF-8?B?'.base64_encode($_POST["ToName"]).'?='.'<1'.$_POST["ToMail"].'>'."\r\n";
		$headers = 'Content-type: text/plain; charset=utf-8'. "\r\n";
		$headers .= 'From: =?UTF-8?B?'.base64_encode($_POST['YourName']).'?='.'<'.$_POST["YourMail"].'>'."\r\n";
	  if (mail($cimzett, $subject, $body, $headers)) {
			 $success = true;
			 $query = "insert into log values (0, '[gesendet]', now(), 'eml')";
		} else {
			 $success = false;
			 $query = "insert into log values (0, '[ungesendet]', now(), 'eml')";
		}
		@mysql_query($query);
Üdv
Sanyi