Autor Zpráva
Tomek
Profil *
Čau chlapci, moc prosím o pomoc:
Používám pro správný chod češtiny (formulář na mail) kód níže a zdálo se, že to funguje, jenže při mailu který je delší se od určitého místa místo textu objevuje toto:

˘ň÷wwrćFś'&†ć7˘öÖ–Ă"ç‡öVÖ–Ă×FöÖV´śfŇć6öĐТŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŇŘ

Je to nějakým omezením některé použité funkce, nebo nenapadá někoho něco? Předem moc díky za rady!


       $to=$uemail;
        $subject="Pozdrav";
        $mailmessage=StrTr($mailmessage,"\x8A\x8D\x8E\x9A\x9D\x9E","\xA9\xAB\xAE\xB9\xBB\xBE");
        $message=Base64_Encode($mailmessage);


        $headers = "From: $web <$realaemail>\n";
        $headers .= "MIME-Version: 1.0\n";
         $headers .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
         $headers .="Content-Transfer-Encoding: base64";

        $chk=@mail( $to, $subject, $message, $headers );
Alphard
Profil
zkuste tohle, jestli nebude fungovat, prosím o více podrobností, abych to mohl opravit
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=2111#2
Tomek
Profil *
Díky za tip, zkusil jsem to, ale výsledek je skoro stejný, akorát se ty znaky trochu proměnily:

??V??V?f?W&??ZF??l:??7FF?:??6?R?6W7LI??7??\H??I?'?6????I?ƒb????WF?:?6W7FlI?7G,:f?B6??fW7G&b?:?7F?:?&W7FW&6??РХ?'VV??2?&W2f?W&??ZF??l:?&V?6??F?

Čím to může proboha být? Zkusil jsem to na více serverech, ale všude to samé.
reduxcz
Profil *
No jelikoz tam mas kodovani iso 8859-2 ktere nepodporuje ceske znaky tak je asi jasne ze to nemuze jet spravne. Utf8 ci cp1250
Tomek
Profil *
Ty budeš asi velkej odborník že.. :D
DoubleThink
Profil *
No jelikoz tam mas kodovani iso 8859-2 ktere nepodporuje ceske znaky tak je asi jasne ze to nemuze jet spravne.
ISO 8859-2, jinak též Latin-2, české znaky obsahuje.

jenže při mailu který je delší se od určitého místa místo textu objevuje toto
To je dost divné. Napadá mě vynucené (a nešetrné vzhedem k base64) zalomení řádku smtp serverem.
Zkusil bych chunk_split:

<?php
// format $data using RFC 2045 semantics
$new_string = chunk_split(base64_encode($data));
?>
Alphard
Profil
Tomek
nejsem si vědom, že by větší délka mohla mít vliv na kódování

psal jste, že od určitého místa, je vždy stejné? pak je to chybné až do konce?
kde berete zdrojový text, nemohlo dojít k míchání více kódování, např. při načítání z databáze, data z formulářů apod.
dělá to jeden stejný text, nebo jste zkušel různé dlouhé texty?

jak dlouhé orientačně jsou? potřebuji si to sám otestovat
Tomek
Profil *
No je to tak že baj voko do deseti řádků dobrý a pak až do konce ty podivný znaky. A dela to i kdyz tam clovek postne text bez diakritiky.. Jedna se o vkladani textu do formulare na mail. Na té délce tolik nezáleží, prostě jakmile je to delší než těch asi deset řádků, tak to začne blbnout. Kódování mám snad všude stejný, ale jistě to nevím, každopádně by to snad blblo celý a ne jen od nějaké části..
Alphard
Profil
A dela to i kdyz tam clovek postne text bez diakritiky
začátek map, tedy ASCII, je snad všude stejný, problém bych tedy nehledal v kódování

jak jste psal, že jste zkoušel více serverů, myslel jste poslat na více e-mailů, nebo z více SMTP serverů?

Já jsem si na zkoušku vypůjčil Plaváčkův článek http://www.blabolnik.cz/desatero-uspesneho-a-kvalitniho-ctenare
Odeslal jsem ho výše odkázaným scriptem z profituxu na google a přišel v perfektním stavu (pravdou je, že až na druhý pokus, ale poprvé to byla má chyba).

<?php
function autoUTF($s)
{
    // detect UTF-8
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
        return $s;
    // detect WINDOWS-1250
    if (preg_match('#[\x7F-\x9F\xBC]#', $s))
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    // assume ISO-8859-2
    return iconv('ISO-8859-2', 'UTF-8', $s);
}

function cs_mail ($to, $predmet, $zprava, $head = "")
       {  $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?=";
          $head .= "MIME-Version: 1.0\n";
          $head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
          $head .= "Content-Transfer-Encoding: base64\n";
          $zprava = base64_encode (autoUTF ($zprava));
          $stav = mail ($to, $predmet, $zprava, $head);
          return $stav ?  TRUE : FALSE;  }
          
$zprava = "
Desatero úspěšného a kvalitního čtenáře.

Tady je asi 3000 znaků.

Všimněte si také, prosím, že se vpravo nahoře na úvodní stránce mého Blábolníku objevila zbrusu nová sekce nazvaná „Vyloveno z internetu“. Nestyďte se mi poslat tip na zajímavý, poučný či kontroverzní článek. Pokud bude stát za to, rád odkaz zveřejním. Nesmí ale pocházet z extra-, hyper- či megablogu.
";

if (cs_mail ("*****@gmail.com", "Test", $zprava))
  echo "OK";
 else
  echo "KO";
?>
Tomek
Profil *
Za b) - skript jsem nahrál na několik serverů, na které mám přístup a otestoval a všude to samé.
Alphard
Profil
Tomek
je mi líto, ale dochází mi nápady, řešení od DoubleThinka jste zkoušel?
Alphard
Profil
teď mě napadlo jedno řešení, které by snad mohlo mít šanci
zkuste http://phpmailer.codeworxtech.com/
jeho implementace je náročnější, je to OOP a bude nutné pročíst návody a manuál, ale když to dosavadní nefunguje ...
Tomek
Profil *
DoubleThink
Hele, seš dobrej! :) Díky moc, zkusil jsem to tam přidat a ejhle, co nevidím. TeĎ ještě kdyby ses mi mohl podívat na téma encoding decoding a budeš uplně nejlepší! :)
Fakt díky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: