PHP script na odosielanie mailového formulára   zodpovězená otázka

Offtopic

Dobrý deň.

Už dlho sa snažím vyriešiť jeden problém, ale vôbec sa mi nedarí. Mám na svojej webovej stránke kontaktný formulár (kódovanie stránky 1250). Na odoslanie formulára mám na serveri tento skript:

<?php

$Msg = "\r\n\r\n";

$UserData .= "Váš email " . $_POST["Itm_8_00_1"] . "\r\n";

$UserData .= "Iný kontakt (telefón) " . $_POST["Itm_8_00_2"] . "\r\n";

$UserData .= "Vaša otázka " . $_POST["Itm_8_00_3"] . "\r\n";

mail( "[email protected]", "email z www.mojadomena.sk", $Msg . $UserData, "From: [email protected]\r\nContent-type: text/plain; charset=1250\r\n");

@header("Location: ../emlreply.html");

?>

Pred odoslaním údaje vo formulári vyzerajú takto:

Váš email [email protected]

Iný kontakt (telefón)

Vaša otázka ľščťžýáíéňä

Na môj email mi však príde toto:

V�� email [email protected]

In� kontakt (telef�n)

Va�a ot�zka ��蝞��������

Môžete mi prosím poradiť, čo s tým? Veľmi pekne vopred ďakujem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Váš e-mail klient má zřejmě nastavení "charset=iso-8859-2" a zprávu posíláte v "charset=1250" (správně: "charset=windows-1250").

Kdybyste zvolil pro e-mail standard, tj. "iso-8859-2" a slovenské znaky v kódu změnil na iso-8859-2, mohlo by to fungovat:

Váą email

Iný kontakt (telefón)

Vaąa otázka

Váą email [email protected]

Iný kontakt (telefón)

Vaąa otázka µąč»ľýáíéňä

Jistější by bylo najít, jak do hlavičky zprávy doplnit informaci o kódování slovenštiny.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ďakujem za odpoveď. Chyba bola práve v tom, že charset som mal iba 1250 a nie windows-1250. Teraz to už ide perfektne. Díky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jestli budou zprávy docházet jen Vám a funguje to, tak OK. Mám však zkušenost (dostávám takové zprávy), že vygenerovaná zpráva nedonutí poštovního klienta ke změně a musím ji provádět při čtení zprávy ručně. Proto jsem navrhoval iso kódování, které je běžnější, většina uživatelů má nejspíš v klientu nastavení na iso.

Kdysi jsem podobný problém řešil pro kamaráda do jeho on-line obchodu pro generování objednávek. Po špatných zkušenostech jsme nakonec zařadili generování zpráv s odstraněním diakritiky a funguje to tak dodnes již řadu let.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ono by to fungovalo i s kódováním windows-1250, klient si informaci přečte a podle toho se přepne. Horší je to, když je tato informace chybná nebo chybí, pak musí klient kódování věštit a t ose vždy nepovede. Musí být ale v e-mailu uvedena hlavička Content-Type: text/plain; charset=windows-1250 a splněny obě dvě následující podmínky:

1. Stránka musí mít také kódování windows-1250, jinak se formulářová data odešlou v kódování jiném a když je pak pošlete do e-mailu, kódování se nepřevede (zlatý .NET framework, tam tohle nehrozí).

2. Soubor php se stránkou musí být také uložen v tomto kódování, aby se zobrazil správně.

Takhle to funguje i s jinými kódováními, musí ale být všude stejná.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zřejmě v té nejednotnosti byl tenkrát problém. Již nevím proč a které servery to byly, co při vystavení stránky kódování převedly z windows na iso. Později to zase přestaly dělat. Proto bylo nakonec jednodušší diakritiku odebírat.

A pak ještě nastavení poštovních služeb na serverech se mění a kódy, které v pohodě odesílaly zprávy, přestaly fungovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback