php mail() nem hajlandó utf-8 levelet küldeni
Tudom, hogy valószínűleg a spanyolviasz titkát keresem, de hát egy újszülöttnek minden vicc új. Már 4 órája keresgélek a lapon. Folytatom, de hátha kisegít valaki - úgy tűnik, én végleg megakadtam.
Több száz hozzászólást találtam fejlécek betűkészletének (karakterkódolásának) beállítására. Kell majd az is, de egyelőre a levél törzsével van bajom.
A felállás: php+MySQL a lapom, utf-8 betűkészlettel, mert kétnyelvű (meg amúgy is, miért ne lehetne minden nyelvet egy megoldással kezelni? szerintem is az utf-é a jövő). Ingyenes tárhelyen elhelyezve (uw), ami a hirdetőcsík miatt keretrendszerbe teszi a lapomat. A keretrendszer beállítása iso-8859-2. Ezt nem tudom fölülírni jávasorral sem, mert az uw minden elküldött oldalam legelejére beszúr egy saját jávasorukat meghívó parancsot, ami bármilyen, a főkeretet érintő változtatás esetén visszafrissít.
Az oldalam megfelelő megjelenését sikerült elérnem a következő beszúrásával:Így tehát már a lap jó, a levél írásakor is helyesen látszódik, ami az űrlapmezőkbe kerül - pontosabban, már be se kell kerülnie, előre gyártott a levél (a küldő kijavít rajta, amit akar). Ráadásul még onnan be is teszem egyúttal MySQL-ba (mint mentést), s ott is helyes. Viszont megérkezéskor már olvashatatlan a levéltörzs (s persze, a tárgysor is). Eleve nem is utf-8-cal jön, arra magamnak kell átállítanom az Outlookban a levelet. De még így se lesz jó az Ő és az Ű (meg a cirill betűk - ami itt most nekem a lényeg). Semmilyen betűkészlettel nem lehet elolvasni rendesen a levelet.
A levelet egyébként php mail() függvénnyel küldöm, sima szöveges (nem html) levélként. Már több mindennel próbálkoztam, pl. ezzel is:Bár már eleve nem bíztam a dologban, mert úgy értettem, hogy "Content-type...stb." csak html-levelekre vonatkozik. Nem is jött be, az uw el se küldte a levelet.
A Morva kézikönyv (http://php.morva.net) nem ír semmit sem a sima szöveges levél törzsének betűkészlet-beállításáról - pedig ez fontosabb lenne, mint a tiritarka html-levelek küldésének részletezgetése... - vagy legalábbis elsődlegesebb.
Hogy a csudába kéne elküldeni php mail()-lel egy sima szöveges utf-8 levelet?
■ Több száz hozzászólást találtam fejlécek betűkészletének (karakterkódolásának) beállítására. Kell majd az is, de egyelőre a levél törzsével van bajom.
A felállás: php+MySQL a lapom, utf-8 betűkészlettel, mert kétnyelvű (meg amúgy is, miért ne lehetne minden nyelvet egy megoldással kezelni? szerintem is az utf-é a jövő). Ingyenes tárhelyen elhelyezve (uw), ami a hirdetőcsík miatt keretrendszerbe teszi a lapomat. A keretrendszer beállítása iso-8859-2. Ezt nem tudom fölülírni jávasorral sem, mert az uw minden elküldött oldalam legelejére beszúr egy saját jávasorukat meghívó parancsot, ami bármilyen, a főkeretet érintő változtatás esetén visszafrissít.
Az oldalam megfelelő megjelenését sikerült elérnem a következő beszúrásával:
<?php
header("Content-Type: text/html; charset=utf-8");
?>
A levelet egyébként php mail() függvénnyel küldöm, sima szöveges (nem html) levélként. Már több mindennel próbálkoztam, pl. ezzel is:
<?php
$cimzett="en##kukac##otthon.hu";
$targy="a levél tárgya";
$torzs="a levél törzse, szövege";
$fejlec="From: ".$felado_neve." <".$felado_cime.">"."\r\n"."Content-type: text/plain; charset=utf-8";
mail($cimzett, $targy, $torzs, $fejlec);
?>
A Morva kézikönyv (http://php.morva.net) nem ír semmit sem a sima szöveges levél törzsének betűkészlet-beállításáról - pedig ez fontosabb lenne, mint a tiritarka html-levelek küldésének részletezgetése... - vagy legalábbis elsődlegesebb.
Hogy a csudába kéne elküldeni php mail()-lel egy sima szöveges utf-8 levelet?
Ha ez segít...
=?ISO-8859-1?Q?_t=FCk=F6rf=FAr=F3g=E9p?=
From: Nagy =?ISO-8859-1?Q?P=E9ter?= <nagyp-ll##kukac##hunaxon.hu>
To: =?ISO-8859-1?Q?P=E9ter?= Nagy <nagyp-ll##kukac##hunaxon.hu>
Content-Type: text/plain; charset=UTF-8
Mime-Version: 1.0
Content-Transfer-Encoding: 8bit
Egyébként javaslom a PhpMailer osztály használatát, Igen hasznos és egy csomó dolgot levesz a válladról.
Még egyszer újraolvasva a leveled, még egy dolog eszembe jutott: a MySQL-ből még jól jönnek ki az adatok? Mert ott is lehet bibi. Milyen verziójú a MySQL és milyen konverziókat csinálsz mielőtt leteszed bele a szövegeket?
--
NP
Nem megy keresztül a MySQL-on a levél szövege
Tkp. a levélhez a MySQL-nak az oldalamon nincs semmi köze. Egyszerűen az űrlapon már eleve megjelenik egy felkínált levélszöveg, amit egy előre megírt php változóval íratok ki a szövegmezőbe - s aztán a tisztelt levélíró már maga eldönti, hogy akar-e változtatni a szövegen. Ez a szöveg nem MySQL adattárból jön elő (pontosabban csak egy része), hanem a php-ben írt lapomon szerepel egy változó értékeként. Továbbá elküldéskor sem megy keresztül a levél a MySQL-on; pont azért, mert nem tudom elolvasni a leveleket, kénytelen voltam gyorsan legyártani egy MySQL táblát, amibe minden levelet, amit küld a mail(), egyúttal elmentek, hogy legalább ott olvasható legyen (s időnként rákukkantok arra a táblára). Csak hát ez persze kőkorszaki, csakis ideiglenes megoldás.
Egyébként az uw.hu MySQL-ja "MySQL 4.1.15-Debian_1-log".
A PhpMailer-ről olvasgattam Hojtsy Gábor itt lévő cikkében is (bár abból nem kaptam választ a kérdésemre), de attól tartok, hogy az uw-nál nem fognak működni az ilyen szintű dolgok. Levelet is csak napi 20-at engednek küldeni, magyarán már maga a mail() függvény is alaposan meg van szorítva a használatában - mi lehet még akkor a továbbfejlesztett dolgokkal?
Csak gyorsan akartam válaszolni, de persze most megpróbálkozom megint a PhpMailer-rel.
Üdv: laji
Talán az én Outlook-omnak is van köze hozzá?
Üdv: laji
Megoldódott: set names utf8
További szép napot!
Üdv: laji