[PHP] Jak odeslat mail s UTF-8 kódováním?

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Thomas123 21. 6. 2010 20:26

Dobrý den,

odesílám email pomocí mb_send_mail, mám nastavené kódování UTF-8, cílový email (to před <>) projedu skrz base64_encode. Všechno to funguje. Jenže potřebuji to spustit jako skript v terminálu na svém Ubuntu serveru a nastává problém, pokud to nahraju jako UTF-8, tak to nefunguje - dostanu hlášku Extension is not present. Pokud dám v Notepad++ ANSI, tak email přijde se smršeným kódováním (protože ho odesílám s UTF-8 hlavičkou).

Teďka hledám odpověď na otázku, jak odeslat email v UTF-8 kódování z ANSI skriptu? Proč chci UTF-8? Předpokládám, že UTF-8 je méně problémové ve webových emailech a různých klientech s různýma znakama.
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar

Odeslat příspěvekod Just_jo 21. 6. 2010 20:53

1. odesíláš email až po napsání zprávy ze stránky? pak jaké kódování máš použité na stránce?
2. pokud máš text emailu v tom php souboru tak :
a) kódovat jako ansi a před odesláním kódovat na UTF-8
b) kódovat rovnou jako UTF-8
Just_jo
Junior
Uživatelský avatar

Odeslat příspěvekod Thomas123 21. 6. 2010 20:57

Vzhledem k tomu, že to běží v terminálu, tak mám text emailu přímo ve skriptu. Soubor v UTF-8 být nemůže, protože mi ho terminál nepřežvejká a jak to kódovat před odesláním zprávy nevím. Jak? Víte někdo?
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar

Odeslat příspěvekod _ghost 21. 6. 2010 21:10

na zmenu kodovani (za predpokladu, ze znas to puvodni) se da pouzit funkce iconv ... viz manual
_ghost
Junior

Odeslat příspěvekod Just_jo 21. 6. 2010 21:11

no tak tedy použij před odesláním
Kód: Vybrat vše
string utf8_encode ( string $data )

http://www.php.net/manual/en/function.utf8-encode.php
Just_jo
Junior
Uživatelský avatar

Odeslat příspěvekod Thomas123 21. 6. 2010 21:28

Bohužel nefunguje utf8_encode, protože znaky nejsou v ISO-8859-1. Nevěděl by někdo, jak zjistit, v jakém kódování pracuje daný script?

-- 21. 6. 2010 22:44 --

Tak jsem pomocí mb_internal_encoding() zjistil, že kódování se používá ISO-8859-1, takže nevím, proč minulé fce nefungují. Nechápu to.
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar

Odeslat příspěvekod Václav M. 21. 6. 2010 21:53

Tak zkus použít iconv("$PuvodniZnakovaSada", "$NovaZnakovaSada", "$Text").
Václav M.
Junior
Uživatelský avatar

Odeslat příspěvekod Thomas123 22. 6. 2010 13:00

iconv jsem zkoušel, ale teď si uvědomuji, že já vůl jsem prohodil puvodni a novou znakovou sadu. Snad to bude fungovat, když to prohodím. Dám vědět, teďka mám vypnutý server
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar

Odeslat příspěvekod Václav M. 22. 6. 2010 15:51

Tak to můžeš být v klidu. Já pokaždé, když tuhle funkci používám, tak si nejsem jist, jestli je jako první ta nová nebo ta původní sada.
Václav M.
Junior
Uživatelský avatar

Odeslat příspěvekod Thomas123 22. 6. 2010 19:25

Tak jsem to teď zkusil a nic, stále rozhozené. Zkusil jsem místo vstupního kódování vložit výstup mb_internal_encoding() a taky nic. Já už nevím, kde hledat chybu.

-- 22. 6. 2010 20:55 --

Pokud byste někdo věděl, co s tím, tak bych byl rád. Zajímavé je, že když jsem to dal místo UTF-8 na ISO-8859-1 (což mi vyhazuje mb_internal_encoding), tak to také pořádně nefungovalo, musel jsem tedy vyrobit workaround a nahradil jsem dané znaky HTML entitami. Nejsem z toho nadšený, ale funguje to.
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků