Autor | Zpráva | ||
---|---|---|---|
RD Profil * |
#1 · Zasláno: 2. 7. 2005, 19:21:14
Mám web a data v MySQL v UTF-8, ale když potřebuji scriptem vyjet data z DB a poslat přes funkci mail() zobrazuje se špatně diakritika, zoušel jsem to přes iconv: $subjekt = iconv('UTF-8', 'iso-8859-2', $_POST[subjekt]); ale stejně se diakritika rozhodí, v jakém formátu posílat český text přes funkci mail()?
|
||
Charlie Profil |
#2 · Zasláno: 2. 7. 2005, 21:26:37
Mail v češtině se standardně posílá v ISO-8859-2. Zkus tvoji funkci přepsat:
iconv('UTF-8', 'ISO-8859-2', $_POST[subjekt]); Možná je to case insensitive, tzn. záleží na velikosti písma. |
||
Acci Profil |
#3 · Zasláno: 2. 7. 2005, 22:34:26
A nebo vyzkoušej ještě
iconv('UTF-8', 'ISO8859-2', $_POST[subjekt]); |
||
Charlie Profil |
#4 · Zasláno: 2. 7. 2005, 22:40:21
Acci, jsem si jistý, že moje řešení funguje, tvojí verzi jsem nikde neviděl. Ale neznamená to, že by teoreticky nemohla fungovat.
|
||
Acci Profil |
#5 · Zasláno: 2. 7. 2005, 22:48:08
Někdy je také dobré použít ISOXXXX-X místo ISO-XXXX-X. Verze knihoven se liší a tak musíte trochu experimentovat s tím, kde a jaký řetězec použít.
Citace z Intervalu (PHP pro pokročilé - ICONV) |
||
Charlie Profil |
#6 · Zasláno: 2. 7. 2005, 22:51:05
Aha, promiň. Tohle si budu pamatovat, je to docela dobrý poznatek.
|
||
RD Profil * |
#7 · Zasláno: 3. 7. 2005, 09:55:19
- tak outlook 2003 subjekt rozhodí, tělo je OK
- gmail nezkousne ani tělo ani subjekt :( není někde ještě nějaký zádrhel? |
||
Acci Profil |
#8 · Zasláno: 3. 7. 2005, 11:30:59 · Upravil/a: Acci
Tak se podiv na tu zprávu na Gmailu. Nahoře dej More Options » Show original a podiv se, co je napsáno za Content-Type:
|
||
Nai Dzet Quiv Profil |
#9 · Zasláno: 3. 7. 2005, 12:16:05
BTW, myslíte si, že je špatné posílat e-mail v UTF-8? (Mně to přijde OK - Thunderbird, ale co ostatní?)
|
||
llook Profil |
#10 · Zasláno: 3. 7. 2005, 15:38:04
Posílej to normálně v UTF-8 s patřičným content-type:
Problém je s předmětem, ten myslím musí být v quoted printable tvaru (protože content-type se netýká hlaviček) a tomu moc nerozumím. |
||
Nai Dzet Quiv Profil |
#11 · Zasláno: 3. 7. 2005, 17:08:52
pro llooka:
Já vím, jak to odeslat. Šlo mi o to, jak je to vhodné pro příjemce pošty. V tomto se nevyznám, ale nikde jsem četl, že e-maily je nejlepší odesílat v ISO-8859-2... Technicky to udělat umím. Předmět musí být bez diakritiky. |
||
Charlie Profil |
#12 · Zasláno: 3. 7. 2005, 23:30:08
S tím předmětem by se to dalo vyřešit - nahradit všechny složité znaky entitami.
|
||
RD Profil * |
#13 · Zasláno: 3. 7. 2005, 23:48:46
díky, už to sviští včetně subjektu, někde jsem našel jen pro doplnění:
$headers = "MIME-Version: 1.0\r\n"; $headers.= "Content-Type: text/plain; charset=utf-8\r\n"; $headers.= "From: od koho <".$_POST[odesilatel].">\r\n"; |
||
Nai Dzet Quiv Profil |
#14 · Zasláno: 4. 7. 2005, 12:34:27
Ale ty e-maily někomu přicházej v divnym kódování (= pomatený znaky). Na Thunderbird i na Seznam mi to přijde OK. nechápu, proč, vše je nastaveno správně...
|
||
Časová prodleva: 1 rok
|
|||
babča [www.oplatek.org] Profil * |
#15 · Zasláno: 16. 7. 2006, 18:28:18
Jede to OK, celý web mám v utf-8.
udělal jsem si funkci... function mail_header_encode($text) vychazel jsem z wikipedie (velmi dobry clanek) http://en.wikipedia.org/wiki/MIME#Encoded-Word $text muze byt normalne v utf-8, s nim se nic delat nemusi. $from a $predmet, protoze jsou v hlavicce, ktera ma pevne dane kodovani ASCII, se musi prekodovat touto fci. $mail_odeslan = mail($prijemce, mail_header_encode($predmet), $text, "From: ".mail_header_encode($odesilatel)."\nMIME-Version: 1.0\nContent-transfer-encoding: 7bit\nContent-Type: text/plain; charset=\"utf-8\""); Hodne stesti. :) Podekujte za pomoc ;) |
||
krteczek Profil |
#16 · Zasláno: 16. 7. 2006, 18:55:32
RD: jen upřesním že pořadí konce řádku a nový řádek čili: \n\r
tak jak to máš to některé emailové služby nemusejí příjmout. (stalo se mi to, hledali jsme chybu a na toto jsme přišli: \r\n je špatně! krteczek |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0